Mercurial > pidgin.yaz
annotate libpurple/protocols/myspace/myspace.c @ 29384:ad4960c2df28
Good call, this doesn't need to be translated. This messaged used to be
shown to users, but now that we throttle outgoing messages to avoid
hitting the rate limit, we don't bother showing this for some reason.
I think it was annoying people and causing confusion. But it really
should happen rarely if ever, so I think it's safe to keep it as a debug
message and not translate it.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 07 Feb 2010 08:31:41 +0000 |
parents | 1386a0e22ac7 |
children | 2cb6ea4420a0 |
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(who != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
255 g_return_val_if_fail(text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
256 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
257 from_username = session->account->username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
258 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
259 g_return_val_if_fail(from_username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
260 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
261 purple_debug_info("msim", "sending %d message from %s to %s: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
262 type, from_username, who, text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
263 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
264 msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
265 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
266 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
267 /* 't' will be inserted here */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
268 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
269 "msg", MSIM_TYPE_STRING, g_strdup(text), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
270 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
271 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
272 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
273 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
274 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
275 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
276 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
277 } |
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 * Lookup a username by userid, from buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
281 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
282 * @param wanted_uid |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
283 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
284 * @return Username of wanted_uid, if on blist, or NULL. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
285 * This is a static string, so don't free it. Copy it if needed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
286 * |
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 static const gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
289 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
290 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
291 GSList *buddies, *cur; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
292 const gchar *ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
293 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
294 buddies = purple_find_buddies(account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
295 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
296 if (!buddies) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
297 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
298 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
299 return NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
300 } |
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 ret = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
303 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
304 for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
305 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
306 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
307 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
308 const gchar *name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
309 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
310 /* See finch/gnthistory.c */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
311 buddy = cur->data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
312 |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
313 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
|
314 name = purple_buddy_get_name(buddy); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
315 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
316 if (uid == wanted_uid) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
317 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
318 ret = name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
319 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
320 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
321 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
322 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
323 g_slist_free(buddies); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
324 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
325 } |
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 * 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
|
329 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
330 * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
331 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
332 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
333 * @return The request/reply ID, used to link replies with requests, or -1. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
334 * Put the rid in your request, 'rid' field. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
335 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
336 * TODO: Make more generic and more specific: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
337 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
338 * 2) data - make it an MsimMessage? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
339 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
340 guint |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
341 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
342 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
343 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
344 guint rid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
345 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
346 rid = session->next_rid++; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
347 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
348 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
349 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
350 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
351 return rid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
352 } |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
355 * Return the icon name for a buddy and account. |
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 * @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
|
358 * @param buddy The buddy to find the icon for, or NULL for the account icon. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
359 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
360 * @return The base icon name string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
361 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
362 static const gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
363 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
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 /* Use a MySpace icon submitted by hbons at |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
366 * http://developer.pidgin.im/wiki/MySpaceIM. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
367 return "myspace"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
368 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
369 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
370 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
371 * Obtain the status text for a buddy. |
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 * @param buddy The buddy to obtain status text for. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
374 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
375 * @return Status text, or NULL if error. Caller g_free()'s. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
376 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
377 static char * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
378 msim_status_text(PurpleBuddy *buddy) |
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 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
381 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
382 const gchar *display_name, *headline; |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
383 PurpleAccount *account; |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
384 PurpleConnection *gc; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
385 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
386 g_return_val_if_fail(buddy != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
387 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
388 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
389 |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
390 account = purple_buddy_get_account(buddy); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
391 gc = purple_account_get_connection(account); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
392 session = (MsimSession *)gc->proto_data; |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
393 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
394 display_name = headline = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
395 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
396 /* Retrieve display name and/or headline, depending on user preference. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
397 if (purple_account_get_bool(session->account, "show_headline", TRUE)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
398 headline = user->headline; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
399 } |
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 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
|
402 display_name = user->display_name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
403 } |
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 /* 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
|
406 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
407 if (display_name && headline) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
408 return g_strconcat(display_name, " ", headline, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
409 } else if (display_name) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
410 return g_strdup(display_name); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
411 } else if (headline) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
412 return g_strdup(headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
413 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
414 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
415 return NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
416 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
417 |
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 * Obtain the tooltip text for a buddy. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
420 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
421 * @param buddy Buddy to obtain tooltip text on. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
422 * @param user_info Variable modified to have the tooltip text. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
423 * @param full TRUE if should obtain full tooltip text. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
424 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
425 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
426 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
427 gboolean full) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
428 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
429 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
430 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
431 g_return_if_fail(buddy != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
432 g_return_if_fail(user_info != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
433 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
434 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
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 if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
437 MsimSession *session; |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
438 PurpleAccount *account = purple_buddy_get_account(buddy); |
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
439 PurpleConnection *gc = purple_account_get_connection(account); |
29367
e137c1fc216a
Check if memory has been freed by looking at its contents does not work
Mark Doliner <mark@kingant.net>
parents:
29365
diff
changeset
|
440 |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
441 session = (MsimSession *)gc->proto_data; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
442 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
443 /* TODO: if (full), do something different? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
444 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
445 /* TODO: request information? have to figure out how to do |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
446 * the asynchronous lookup like oscar does (tooltip shows |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
447 * 'retrieving...' if not yet available, then changes when it is). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
448 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
449 * Right now, only show what we have on hand. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
450 */ |
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 /* Show abbreviated user info. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
453 msim_append_user_info(session, user_info, user, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
454 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
455 } |
22160 | 456 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
457 /** |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
458 * Get possible user status types. Based on mockprpl. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
459 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
460 * @return GList of status types. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
461 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
462 static GList * |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
463 msim_status_types(PurpleAccount *acct) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
464 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
465 GList *types; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
466 PurpleStatusType *status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
467 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
468 purple_debug_info("myspace", "returning status types\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
469 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
470 types = NULL; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
471 |
22160 | 472 /* 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
|
473 #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
474 purple_status_type_new_with_attrs( \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
475 prim, /* PurpleStatusPrimitive */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
476 NULL, /* id - use default */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
477 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
|
478 TRUE, /* saveable */ \ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
479 TRUE, /* user_settable */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
480 FALSE, /* not independent */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
481 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
482 /* Attributes - each status can have a message. */ \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
483 "message", \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
484 _("Message"), \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
485 purple_value_new(PURPLE_TYPE_STRING), \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
486 NULL); \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
487 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
488 \ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
489 types = g_list_append(types, status) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
490 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
491 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
492 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
493 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
494 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
495 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
496 |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
497 /* Except tune status is different... */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
498 status = purple_status_type_new_with_attrs( |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
499 PURPLE_STATUS_TUNE, /* primitive */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
500 "tune", /* ID */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
501 NULL, /* name - use default */ |
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
|
502 FALSE, /* saveable */ |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
503 TRUE, /* should be user_settable some day */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
504 TRUE, /* independent */ |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
505 |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
506 PURPLE_TUNE_ARTIST, _("Artist"), purple_value_new(PURPLE_TYPE_STRING), |
22266
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
507 PURPLE_TUNE_TITLE, _("Title"), purple_value_new(PURPLE_TYPE_STRING), |
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
508 NULL); |
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
509 |
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
510 types = g_list_append(types, status); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
511 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
512 return types; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
513 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
514 |
27237
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
515 /* |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
516 * TODO: This define is stolen from oscar.h. |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
517 * It's also in yahoo.h. |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
518 * It should be in libpurple/util.c |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
519 */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
520 #define msim_put32(buf, data) ( \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
521 (*((buf)) = (unsigned char)((data)>>24)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
522 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
523 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
524 (*((buf)+3) = (unsigned char)(data)&0xff), \ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
525 4) |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
526 |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
527 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
528 * Compute the base64'd login challenge response based on username, password, nonce, and IPs. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
529 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
530 * @param nonce The base64 encoded nonce ('nc') field from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
531 * @param email User's email address (used as login name). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
532 * @param password User's cleartext password. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
533 * @param response_len Will be written with response length. |
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 * @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
|
536 * Must be g_free()'d when finished. NULL if error. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
537 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
538 static gchar * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
539 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
540 const gchar *email, const gchar *password, guint *response_len) |
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 PurpleCipherContext *key_context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
543 PurpleCipher *sha1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
544 PurpleCipherContext *rc4; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
545 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
546 guchar hash_pw[HASH_SIZE]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
547 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
|
548 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
|
549 GString *data; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
550 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
|
551 size_t data_out_len; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
552 gsize conv_bytes_read, conv_bytes_written; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
553 GError *conv_error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
554 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
555 int i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
556 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
557 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
558 g_return_val_if_fail(nonce != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
559 g_return_val_if_fail(email != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
560 g_return_val_if_fail(password != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
561 g_return_val_if_fail(response_len != NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
562 |
24883
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
563 /* |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
564 * 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
|
565 * web page doesn't let you enter more than 10 characters, but you |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
566 * can enter more than 10 when logging in on myspace.com and they |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
567 * truncate it. |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
568 */ |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
569 password_truncated = g_strndup(password, 10); |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
570 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
571 /* Convert password to lowercase (required for passwords containing |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
572 * uppercase characters). MySpace passwords are lowercase, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
573 * 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
|
574 password_utf8_lc = g_utf8_strdown(password_truncated, -1); |
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24853
diff
changeset
|
575 g_free(password_truncated); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
576 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
577 /* Convert ASCII password to UTF16 little endian */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
578 purple_debug_info("msim", "converting password to UTF-16LE\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
579 conv_error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
580 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
581 &conv_bytes_read, &conv_bytes_written, &conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
582 g_free(password_utf8_lc); |
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 if (conv_error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
585 purple_debug_error("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
586 "g_convert password UTF8->UTF16LE failed: %s", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
587 conv_error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
588 g_error_free(conv_error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
589 return NULL; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
590 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
591 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
592 /* Compute password hash */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
593 purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
594 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
595 g_free(password_utf16le); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
596 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
597 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
598 purple_debug_info("msim", "pwhash = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
599 for (i = 0; i < sizeof(hash_pw); i++) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
600 purple_debug_info("msim", "%.2x ", hash_pw[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
601 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
602 #endif |
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 /* key = sha1(sha1(pw) + nonce2) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
605 sha1 = purple_ciphers_find_cipher("sha1"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
606 key_context = purple_cipher_context_new(sha1, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
607 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
608 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
609 purple_cipher_context_digest(key_context, sizeof(key), key, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
610 purple_cipher_context_destroy(key_context); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
611 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
612 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
613 purple_debug_info("msim", "key = "); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
614 for (i = 0; i < sizeof(key); i++) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
615 purple_debug_info("msim", "%.2x ", key[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
616 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
617 purple_debug_info("msim", "\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
618 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
619 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
620 rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
621 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
622 /* 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
|
623 * but only first 0x10 used for the RC4 key. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
624 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
625 purple_cipher_context_set_key(rc4, key); |
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 encrypt: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
628 * nonce1+email+IP list */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
629 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
630 data = g_string_new(NULL); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
631 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
|
632 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
633 /* Include the null terminator */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
634 g_string_append_len(data, email, strlen(email) + 1); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
635 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
636 while (data->len % 4 != 0) |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
637 g_string_append_c(data, 0xfb); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
638 |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
639 #ifdef SEND_OUR_IP_ADDRESSES |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
640 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */ |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
641 g_string_set_size(data, data->len + 4); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
642 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
|
643 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
|
644 #else |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
645 g_string_set_size(data, data->len + 4); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
646 msim_put32(data->str + data->len - 4, 0); |
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27236
diff
changeset
|
647 #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
|
648 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
649 data_out = g_new0(guchar, data->len); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
650 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
651 purple_cipher_context_encrypt(rc4, (const guchar *)data->str, |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
652 data->len, data_out, &data_out_len); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
653 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
|
654 |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
655 if (data_out_len != data->len) { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
656 purple_debug_info("msim", "msim_compute_login_response: " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
657 "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
|
658 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
|
659 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
660 |
24732
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
661 g_string_free(data, TRUE); |
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24731
diff
changeset
|
662 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
663 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
664 purple_debug_info("msim", "response=<%s>\n", data_out); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
665 #endif |
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 *response_len = data_out_len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
668 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
669 return (gchar *)data_out; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
670 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
671 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
672 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
673 * Process a login challenge, sending a response. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
674 * |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
675 * @param session |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
676 * @param msg Login challenge message. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
677 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
678 * @return TRUE if successful, FALSE if not |
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 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
681 msim_login_challenge(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
682 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
683 PurpleAccount *account; |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
684 gchar *response; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
685 guint response_len; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
686 gchar *nc; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
687 gsize nc_len; |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
688 gboolean ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
689 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
690 g_return_val_if_fail(msg != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
691 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
692 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
693 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
694 account = session->account; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
695 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
696 g_return_val_if_fail(account != NULL, FALSE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
697 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
698 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
699 |
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
|
700 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
701 " bytes, decoded\n", nc_len); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
702 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
703 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
|
704 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER |
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22467
diff
changeset
|
705 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
21358 | 706 purple_connection_error_reason (session->gc, |
707 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
708 _("Unexpected challenge length from server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
709 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
710 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
711 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
712 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
713 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
714 response_len = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
715 response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
716 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
717 g_free(nc); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
718 |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
719 ret = msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
720 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
721 /* This is actually user's email address. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
722 "username", MSIM_TYPE_STRING, g_strdup(account->username), |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
723 /* GString will be freed in msim_msg_free() in msim_send(). */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
724 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
725 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
726 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
727 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
728 "reconn", MSIM_TYPE_INTEGER, 0, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
729 "status", MSIM_TYPE_INTEGER, 100, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
730 "id", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
731 NULL); |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
732 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
733 g_free(response); |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
734 |
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
735 return ret; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
736 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
737 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
738 /** |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
739 * Process unrecognized information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
740 * |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
741 * @param session |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
742 * @param msg An MsimMessage that was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
743 * @param note Information on what was unrecognized, or NULL. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
744 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
745 void |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
746 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
747 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
748 /* TODO: Some more context, outwardly equivalent to a backtrace, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
749 * for helping figure out what this msg is for. What was going on? |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
750 * But not too much information so that a user |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
751 * posting this dump reveals confidential information. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
752 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
753 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
754 /* TODO: dump unknown msgs to file, so user can send them to me |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
755 * 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
|
756 * by Alexandr Shutko, who maintains OSCAR protocol documentation). |
22156 | 757 * |
758 * Filed enhancement ticket for libpurple as #4688. | |
759 */ | |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
760 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
761 purple_debug_info("msim", "Unrecognized data on account for %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
762 (session && session->account && session->account->username) ? |
19353
af0e77c44667
MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19352
diff
changeset
|
763 session->account->username : "(NULL)"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
764 if (note) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
765 purple_debug_info("msim", "(Note: %s)\n", note); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
766 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
767 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
768 if (msg) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
769 msim_msg_dump("Unrecognized message dump: %s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
770 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
771 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
772 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
773 /** Called when the session key arrives to check whether the user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
774 * has a username, and set one if desired. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
775 static gboolean |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
776 msim_is_username_set(MsimSession *session, MsimMessage *msg) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
777 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
778 g_return_val_if_fail(msg != NULL, FALSE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
779 g_return_val_if_fail(session->gc != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
780 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
781 session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
782 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
783 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
784 /* 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
|
785 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
786 /* Comes with: proof,profileid,userid,uniquenick -- all same values |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
787 * some of the time, but can vary. This is our own user ID. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
788 session->userid = msim_msg_get_integer(msg, "userid"); |
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 /* 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
|
791 purple_account_set_int(session->account, "uid", session->userid); |
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 /* Not sure what profileid is used for. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
794 if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
795 msim_unrecognized(session, msg, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
796 "Profile ID didn't match user ID, don't know why"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
797 } |
24731
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 /* 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
|
800 * 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
|
801 * 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
|
802 session->username = msim_msg_get_string(msg, "uniquenick"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
803 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
804 /* If user lacks a username, help them get one. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
805 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
806 purple_debug_info("msim_is_username_set", "no username is set\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
807 purple_request_yes_no(session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
808 _("MySpaceIM - No Username Set"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
809 _("You appear to have no MySpace username."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
810 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
811 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
812 session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
813 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
814 NULL, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
815 session->gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
816 G_CALLBACK(msim_set_username_cb), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
817 G_CALLBACK(msim_do_not_set_username_cb)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
818 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
819 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
820 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
821 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
822 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
823 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
824 #ifdef MSIM_USE_KEEPALIVE |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
825 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
826 * Check if the connection is still alive, based on last communication. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
827 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
828 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
829 msim_check_alive(gpointer data) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
830 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
831 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
832 time_t delta; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
833 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
834 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
835 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
836 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
|
837 |
22156 | 838 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
839 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
|
840 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
|
841 "msim_check_alive: %zu > interval of %d, presumed dead\n", |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
842 delta, MSIM_KEEPALIVE_INTERVAL); |
22156 | 843 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
|
844 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24409
diff
changeset
|
845 _("Lost connection with server")); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
846 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
847 return FALSE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
848 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
849 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
850 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
851 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
852 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
853 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
854 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
855 * Handle mail reply checks. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
856 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
857 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
858 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
859 { |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
860 MsimMessage *body; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
861 guint old_inbox_status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
862 guint i, n; |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
863 /* Information for each new inbox message type. */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
864 static struct |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
865 { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
866 const gchar *key; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
867 guint bit; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
868 const gchar *url; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
869 const gchar *text; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
870 } message_types[] = { |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
871 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
872 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
873 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
874 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL }, |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
875 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
876 }; |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
877 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
878 *tos[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
879 *urls[G_N_ELEMENTS(message_types) + 1] = { "" }, |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
880 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" }; |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
881 |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
882 g_return_if_fail(reply != NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
883 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
884 /* 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
|
885 /* khc: then use N_() in the array initializer and use _() when they are |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
886 used */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
887 message_types[0].text = _("New mail messages"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
888 message_types[1].text = _("New blog comments"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
889 message_types[2].text = _("New profile comments"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
890 message_types[3].text = _("New friend requests!"); |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
891 message_types[4].text = _("New picture comments"); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
892 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
893 body = msim_msg_get_dictionary(reply, "body"); |
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
894 |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
895 if (body == NULL) |
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
896 return; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
897 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
898 old_inbox_status = session->inbox_status; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
899 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
900 n = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
901 |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25861
diff
changeset
|
902 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
903 const gchar *key; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
904 guint bit; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
905 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
906 key = message_types[i].key; |
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
907 bit = message_types[i].bit; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
908 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
909 if (msim_msg_get(body, key)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
910 /* Notify only on when _changes_ from no mail -> has mail |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
911 * (edge triggered) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
912 if (!(session->inbox_status & bit)) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
913 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
914 key ? key : "(NULL)", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
915 |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
916 subjects[n] = message_types[i].text; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
917 froms[n] = _("MySpace"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
918 tos[n] = session->username; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
919 /* TODO: append token, web challenge, so automatically logs in. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
920 * Would also need to free strings because they won't be static |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
921 */ |
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
922 urls[n] = message_types[i].url; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
923 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
924 ++n; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
925 } else { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
926 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
927 "msim_check_inbox_cb: already notified of %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
928 key ? key : "(NULL)"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
929 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
930 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
931 session->inbox_status |= bit; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
932 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
933 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
934 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
935 if (n) { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
936 purple_debug_info("msim", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
937 "msim_check_inbox_cb: notifying of %d\n", n); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
938 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
939 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
940 purple_notify_emails(session->gc, /* handle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
941 n, /* count */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
942 TRUE, /* detailed */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
943 subjects, froms, tos, urls, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
944 NULL, /* PurpleNotifyCloseCallback cb */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
945 NULL); /* gpointer user_data */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
946 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
947 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
948 |
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
949 msim_msg_free(body); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
950 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
951 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
952 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
953 * Send request to check if there is new mail. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
954 */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
955 static gboolean |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
956 msim_check_inbox(gpointer 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 MsimSession *session; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
959 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
960 session = (MsimSession *)data; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
961 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
962 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
|
963 g_return_val_if_fail(msim_send(session, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
964 "persist", MSIM_TYPE_INTEGER, 1, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
965 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
966 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
967 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
968 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
969 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
970 "rid", MSIM_TYPE_INTEGER, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
971 msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
972 "body", MSIM_TYPE_STRING, g_strdup(""), |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
973 NULL), TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
974 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
975 /* Always return true, so that we keep checking for mail. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
976 return TRUE; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
977 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
978 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
979 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
980 * Add contact from server to buddy list, after looking up username. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
981 * Callback from msim_add_contact_from_server(). |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
982 * |
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
983 * @param data An MsimMessage * of the contact information. Will be freed. |
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
984 */ |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
985 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
986 msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lookup_info, gpointer data) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
987 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
988 MsimMessage *contact_info, *user_lookup_info_body; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
989 PurpleGroup *group; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
990 PurpleBuddy *buddy; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
991 MsimUser *user; |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
992 gchar *username, *group_name, *display_name; |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
993 guint uid, visibility; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
994 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
995 contact_info = (MsimMessage *)data; |
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
|
996 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
997 uid = msim_msg_get_integer(contact_info, "ContactID"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
998 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
999 if (!user_lookup_info) { |
22159 | 1000 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
|
1001 display_name = NULL; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1002 g_return_if_fail(username != NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1003 } else { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1004 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1005 username = msim_msg_get_string(user_lookup_info_body, "UserName"); |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1006 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName"); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1007 msim_msg_free(user_lookup_info_body); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1008 g_return_if_fail(username != NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1009 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1010 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1011 purple_debug_info("msim_add_contact_from_server_cb", |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1012 "*** about to add/update username=%s\n", username); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1013 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1014 /* 1. Creates a new group, or gets existing group if it exists (or so |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1015 * the documentation claims). */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1016 group_name = msim_msg_get_string(contact_info, "GroupName"); |
22985
882af25a8edf
Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22982
diff
changeset
|
1017 if (!group_name || (*group_name == '\0')) { |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1018 g_free(group_name); |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1019 group_name = g_strdup(_("IM Friends")); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1020 purple_debug_info("myspace", "No GroupName specified, defaulting to '%s'.\n", group_name); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1021 } |
22982
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1022 group = purple_find_group(group_name); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1023 if (!group) { |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1024 group = purple_group_new(group_name); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1025 /* Add group to beginning. See #2752. */ |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1026 purple_blist_add_group(group, NULL); |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1027 } |
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22590
diff
changeset
|
1028 g_free(group_name); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1029 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1030 visibility = msim_msg_get_integer(contact_info, "Visibility"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1031 if (visibility == 2) { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1032 /* This buddy is blocked (and therefore not on our buddy list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1033 purple_privacy_deny_add(session->account, username, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1034 msim_msg_free(contact_info); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1035 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
|
1036 g_free(display_name); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1037 return; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1038 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
1039 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1040 /* 2. Get or create buddy */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1041 buddy = purple_find_buddy(session->account, username); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1042 if (!buddy) { |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1043 purple_debug_info("msim_add_contact_from_server_cb", |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1044 "creating new buddy: %s\n", username); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1045 buddy = purple_buddy_new(session->account, username, NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1046 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1047 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1048 /* TODO: use 'Position' in contact_info to take into account where buddy is */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1049 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1050 |
24761
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1051 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
|
1052 /* |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1053 * This user has not set their username! Set their server |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1054 * alias to their display name so that we don't see a bunch |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1055 * of numbers in the buddy list. |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1056 */ |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1057 if (display_name != NULL) { |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1058 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
|
1059 serv_got_alias(session->gc, username, display_name); |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1060 } else { |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1061 serv_got_alias(session->gc, username, |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1062 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
|
1063 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1064 } |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1065 g_free(display_name); |
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24750
diff
changeset
|
1066 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1067 /* 3. Update buddy information */ |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1068 user = msim_get_user_from_buddy(buddy, TRUE); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1069 |
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
|
1070 user->id = uid; |
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24631
diff
changeset
|
1071 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1072 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1073 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1074 /* Stores a few fields in the MsimUser, relevant to the buddy itself. |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1075 * AvatarURL, Headline, ContactID. */ |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1076 msim_store_user_info(session, contact_info, NULL); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1077 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1078 /* TODO: other fields, store in 'user' */ |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1079 msim_msg_free(contact_info); |
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1080 |
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1081 g_free(username); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1082 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1083 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1084 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1085 * Add first ContactID in contact_info to buddy's list. Used to add |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1086 * server-side buddies to client-side list. |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1087 * |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1088 * @return TRUE if added. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1089 */ |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1090 static gboolean |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1091 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info) |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1092 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1093 guint uid; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1094 const gchar *username; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1095 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1096 uid = msim_msg_get_integer(contact_info, "ContactID"); |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1097 g_return_val_if_fail(uid != 0, FALSE); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1098 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1099 /* Lookup the username, since NickName and IMName is unreliable */ |
22159 | 1100 username = msim_uid2username_from_blist(session->account, uid); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1101 if (!username) { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1102 gchar *uid_str; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1103 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1104 uid_str = g_strdup_printf("%d", uid); |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1105 purple_debug_info("msim_add_contact_from_server", |
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
|
1106 "contact_info addr=%p\n", contact_info); |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1107 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info)); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1108 g_free(uid_str); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1109 } else { |
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1110 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info)); |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1111 } |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1112 |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1113 /* Say that the contact was added, even if we're still looking up |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1114 * their username. */ |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1115 return TRUE; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1116 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1117 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1118 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1119 * Called when contact list is received from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1120 */ |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1121 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1122 msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1123 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1124 MsimMessage *body, *body_node; |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1125 gchar *msg; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1126 guint buddy_count; |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1127 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1128 body = msim_msg_get_dictionary(reply, "body"); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1129 |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1130 buddy_count = 0; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1131 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1132 for (body_node = body; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1133 body_node != NULL; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1134 body_node = msim_msg_get_next_element_node(body_node)) |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1135 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1136 MsimMessageElement *elem; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1137 |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1138 elem = (MsimMessageElement *)body_node->data; |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1139 |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
1140 if (g_str_equal(elem->name, "ContactID")) |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1141 { |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1142 /* Will look for first contact in body_node */ |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1143 if (msim_add_contact_from_server(session, body_node)) { |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1144 ++buddy_count; |
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1145 } |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1146 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1147 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1148 |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1149 switch (GPOINTER_TO_UINT(user_data)) { |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1150 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS: |
23334
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1151 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)", |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1152 "%d buddies were added or updated from the server (including buddies already on the server-side list)", |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1153 buddy_count), |
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23321
diff
changeset
|
1154 buddy_count); |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1155 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1156 g_free(msg); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1157 break; |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1158 |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1159 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS: |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1160 /* TODO */ |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1161 break; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1162 |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1163 case MSIM_CONTACT_LIST_INITIAL_FRIENDS: |
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
|
1164 /* The session is now set up, ready to be connected. This emits the |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1165 * signedOn signal, so clients can now do anything with msimprpl, and |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1166 * we're ready for it (session key, userid, username all setup). */ |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1167 purple_connection_update_progress(session->gc, _("Connected"), 3, 4); |
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24895
diff
changeset
|
1168 purple_connection_set_state(session->gc, PURPLE_CONNECTED); |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1169 break; |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1170 } |
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1171 |
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1172 msim_msg_free(body); |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1173 } |
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1174 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1175 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1176 * Get contact list, calling msim_got_contact_list() with |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1177 * what_to_do_after as user_data gpointer. |
24735 | 1178 * |
1179 * @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
|
1180 */ |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1181 static gboolean |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1182 msim_get_contact_list(MsimSession *session, int what_to_do_after) |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1183 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1184 return msim_send(session, |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1185 "persist", MSIM_TYPE_INTEGER, 1, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1186 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1187 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1188 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1189 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID, |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1190 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1191 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1192 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)), |
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1193 "body", MSIM_TYPE_STRING, g_strdup(""), |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1194 NULL); |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1195 } |
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1196 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1197 /** Called after username is set, if necessary and we're open for business. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1198 gboolean msim_we_are_logged_on(MsimSession *session) |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1199 { |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1200 MsimMessage *body; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1201 |
24734
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1202 /* Set display name to username (otherwise will show email address) */ |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1203 purple_connection_set_display_name(session->gc, session->username); |
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24732
diff
changeset
|
1204 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1205 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1206 "UserID", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1207 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1208 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1209 /* Request IM info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1210 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
|
1211 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1212 "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
|
1213 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1214 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1215 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1216 "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
|
1217 "UserID", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1218 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1219 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1220 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1221 /* Request MySpace info about ourself. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1222 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
|
1223 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1224 "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
|
1225 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1226 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1227 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1228 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1229 "body", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1230 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1231 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1232 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1233 /* TODO: set blocklist */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1234 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1235 /* Notify servers of our current status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1236 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1237 msim_set_status(session->account, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1238 purple_account_get_active_status(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1239 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1240 /* TODO: setinfo */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1241 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1242 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1243 "TotalFriends", MSIM_TYPE_INTEGER, 666, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1244 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1245 msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1246 "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1247 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1248 "info", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1249 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1250 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1251 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1252 /* Disable due to problems with timeouts. TODO: fix. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1253 #ifdef MSIM_USE_KEEPALIVE |
25861
7f552614ec8a
applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents:
25168
diff
changeset
|
1254 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1255 (GSourceFunc)msim_check_alive, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1256 #endif |
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 /* Check mail if they want to. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1259 if (purple_account_get_check_mail(session->account)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1260 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1261 (GSourceFunc)msim_check_inbox, session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1262 msim_check_inbox(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1263 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1264 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1265 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
|
1266 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1267 return TRUE; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1271 * Record the client version in the buddy list, from an incoming message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1272 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1273 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1274 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
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 gchar *username, *cv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1277 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1278 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1279 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1280 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1281 cv = msim_msg_get_string(msg, "cv"); |
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 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1284 if (!cv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1285 /* No client version to record, don't worry about it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1286 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1287 return FALSE; |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1290 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1291 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1292 if (user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1293 user->client_cv = atol(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1294 ret = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1295 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1296 ret = FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1297 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1298 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1299 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1300 g_free(cv); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1301 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1302 return ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1303 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1304 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1305 #ifdef MSIM_SEND_CLIENT_VERSION |
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 * 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
|
1308 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1309 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1310 msim_send_unofficial_client(MsimSession *session, gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1311 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1312 gchar *our_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1313 gboolean ret; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1314 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1315 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
|
1316 PURPLE_MAJOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1317 PURPLE_MINOR_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1318 PURPLE_MICRO_VERSION, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1319 MSIM_PRPL_VERSION_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1320 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1321 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
|
1322 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1323 return ret; |
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 #endif |
28249
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1326 /** |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1327 * Process incoming status mood messages. |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1328 * |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1329 * @param session |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1330 * @param msg Status mood update message. Caller frees. |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1331 * |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1332 * @return TRUE if successful. |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1333 */ |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1334 static gboolean |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1335 msim_incoming_status_mood(MsimSession *session, MsimMessage *msg) { |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1336 /* TODO: I dont know too much about this yet, |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1337 * so until I see how the official client handles |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1338 * this and decide if libpurple should as well, |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1339 * well just say we used it |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1340 */ |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1341 gchar *ss; |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1342 ss = msim_msg_get_string(msg, "msg"); |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1343 purple_debug_info("msim", "Incoming Status Message: %s", ss ? ss : "(NULL)"); |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1344 g_free(ss); |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1345 return TRUE; |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1346 } |
24731
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1349 * Process incoming status messages. |
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 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1352 * @param msg Status update message. Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1353 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1354 * @return TRUE if successful. |
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 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1357 msim_incoming_status(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1358 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1359 PurpleBuddyList *blist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1360 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1361 GList *list; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1362 gchar *status_headline, *status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1363 gint status_code, purple_status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1364 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1365 gchar *unrecognized_msg; |
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 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1368 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1369 /* Helpfully looked up by msim_incoming_resolve() for us. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1370 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1371 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1372 |
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 gchar *ss; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1375 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1376 ss = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1377 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1378 "msim_status: updating status for <%s> to <%s>\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1379 username, ss ? ss : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1380 g_free(ss); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1381 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1382 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1383 /* Example fields: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1384 * |s|0|ss|Offline |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1385 * |s|1|ss|:-)|ls||ip|0|p|0 |
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 list = msim_msg_get_list(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1388 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1389 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1390 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1391 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1392 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1393 blist = purple_get_blist(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1394 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1395 /* Add buddy if not found. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1396 * TODO: Could this be responsible for #3444? */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1397 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1398 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1399 PurpleBuddy *buddy; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1400 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1401 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1402 "msim_status: making new buddy for %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1403 buddy = purple_buddy_new(session->account, username, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1404 purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1405 |
25005
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1406 user = msim_get_user_from_buddy(buddy, TRUE); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1407 user->id = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1408 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1409 /* Keep track of the user ID across sessions */ |
25374
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1410 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
|
1411 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1412 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1413 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1414 purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1415 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1416 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1417 if (status_headline && strcmp(status_headline, "") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1418 /* The status headline is plaintext, but libpurple treats it as HTML, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1419 * so escape any HTML characters to their entity equivalents. */ |
24770 | 1420 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
|
1421 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1422 status_headline_escaped = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1423 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1424 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1425 g_free(status_headline); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1426 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1427 /* don't copy; let the MsimUser own the headline, memory-wise */ |
24770 | 1428 g_free(user->headline); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1429 user->headline = status_headline_escaped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1430 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1431 /* Set user status */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1432 switch (status_code) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1433 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1434 purple_status_code = PURPLE_STATUS_OFFLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1435 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1436 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1437 case MSIM_STATUS_CODE_ONLINE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1438 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1439 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1440 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1441 case MSIM_STATUS_CODE_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1442 purple_status_code = PURPLE_STATUS_AWAY; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1443 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1444 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1445 case MSIM_STATUS_CODE_IDLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1446 /* Treat idle as an available status. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1447 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1448 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1449 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1450 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1451 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1452 username, status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1453 purple_status_code = PURPLE_STATUS_AVAILABLE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1454 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1455 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1456 status_code); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1457 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1458 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1459 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1460 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1461 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1462 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1463 if (status_code == MSIM_STATUS_CODE_IDLE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1464 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
|
1465 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
|
1466 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1467 /* 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
|
1468 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
|
1469 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1470 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1471 #ifdef MSIM_SEND_CLIENT_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1472 if (status_code == MSIM_STATUS_CODE_ONLINE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1473 /* Secretly whisper to unofficial clients our own version as they come online */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1474 msim_send_unofficial_client(session, username); |
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 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1477 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1478 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1479 /* Get information when they come online. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1480 * TODO: periodically refresh? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1481 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1482 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1483 msim_lookup_user(session, username, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1484 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1485 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1486 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1487 msim_msg_list_free(list); |
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 return TRUE; |
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 |
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 * Handle an incoming instant message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1494 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1495 * @param session The session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1496 * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1497 * Should also contain username in _username from preprocessing. |
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 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1500 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1501 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
|
1502 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
|
1503 { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1504 gchar *msg_msim_markup, *msg_purple_markup; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1505 gchar *userid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1506 time_t time_received; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1507 PurpleConversation *conv; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1508 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1509 /* I know this isn't really a string... but we need it to be one for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1510 * purple_find_conversation_with_account(). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1511 userid = msim_msg_get_string(msg, "f"); |
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 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
|
1514 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1515 if (msim_is_userid(username)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1516 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1517 username, purple_account_get_username(session->account)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1518 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1519 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1520 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1521 /* See if a conversation with their UID already exists...*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1522 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1523 if (conv) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1524 /* Since the conversation exists... We need to normalize it */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1525 purple_conversation_set_name(conv, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1526 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1527 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1528 msg_msim_markup = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1529 g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1530 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1531 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1532 g_free(msg_msim_markup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1533 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1534 time_received = msim_msg_get_integer(msg, "date"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1535 if (!time_received) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1536 purple_debug_info("msim_incoming_im", "date in message not set.\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1537 time_received = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1538 } |
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 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
|
1541 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1542 g_free(msg_purple_markup); |
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 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1545 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1546 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1547 /** |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1548 * Handle an incoming action message or an IM. |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1549 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1550 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1551 * @param msg |
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 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1554 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1555 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
|
1556 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
|
1557 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1558 gchar *msg_text, *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1559 gboolean rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1560 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1561 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1562 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1563 msg_text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1564 g_return_val_if_fail(msg_text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1565 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1566 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1567 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1568 |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1569 purple_debug_info("msim", |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1570 "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
|
1571 msg_text, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1572 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1573 if (g_str_equal(msg_text, "%typing%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1574 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1575 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1576 } else if (g_str_equal(msg_text, "%stoptyping%")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1577 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1578 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1579 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1580 rc = msim_incoming_zap(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1581 } else if (strstr(msg_text, "!!!GroupCount=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1582 /* TODO: support group chats. I think the number in msg_text has |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1583 * 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
|
1584 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
|
1585 "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1586 "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
|
1587 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1588 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1589 } else if (strstr(msg_text, "!!!Offline=")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1590 /* TODO: support group chats. This one might mean a user |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1591 * 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
|
1592 purple_debug_info("msim", "msim_incoming_action_or_im: " |
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1593 "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
|
1594 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1595 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1596 } else if (msim_msg_get_integer(msg, "aid") != 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1597 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1598 msim_msg_get_integer(msg, "aid"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1599 msim_msg_get_integer(msg, "f"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1600 msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1601 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1602 rc = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1603 } else { |
27109
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27100
diff
changeset
|
1604 rc = msim_incoming_im(session, msg, username); |
24731
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1607 g_free(msg_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1608 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1609 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1610 return rc; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1614 * Process an incoming media (message background?) message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1615 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1616 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1617 msim_incoming_media(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1618 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1619 gchar *username, *text; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1620 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1621 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1622 text = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1623 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1624 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1625 g_return_val_if_fail(text != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1626 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1627 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1628 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1629 /* Media messages are sent when the user opens a window to someone. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1630 * Tell libpurple they started typing and stopped typing, to inform the Psychic |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1631 * Mode plugin so it too can open a window to the user. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1632 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1633 serv_got_typing_stopped(session->gc, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1634 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1635 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1636 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1637 return TRUE; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1641 * Process an incoming "unofficial client" message. The plugin for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1642 * Miranda IM sends this message with the plugin information. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1643 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1644 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1645 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1646 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1647 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1648 gchar *username, *client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1649 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1650 username = msim_msg_get_string(msg, "_username"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1651 client_info = msim_msg_get_string(msg, "msg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1652 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1653 g_return_val_if_fail(username != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1654 g_return_val_if_fail(client_info != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1655 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1656 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1657 username, client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1658 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1659 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1660 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1661 g_return_val_if_fail(user != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1662 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1663 if (user->client_info) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1664 g_free(user->client_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1665 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1666 user->client_info = client_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1667 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1668 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1669 /* Do not free client_info - the MsimUser now owns it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1670 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1671 return TRUE; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1675 * Handle an incoming buddy message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1676 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1677 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1678 msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1679 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1680 guint bm; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1681 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1682 bm = msim_msg_get_integer(msg, "bm"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1683 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1684 msim_incoming_bm_record_cv(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1685 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1686 switch (bm) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1687 case MSIM_BM_STATUS: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1688 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
|
1689 case MSIM_BM_ACTION_OR_IM_DELAYABLE: |
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27219
diff
changeset
|
1690 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
|
1691 return msim_incoming_action_or_im(session, msg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1692 case MSIM_BM_MEDIA: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1693 return msim_incoming_media(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1694 case MSIM_BM_UNOFFICIAL_CLIENT: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1695 return msim_incoming_unofficial_client(session, msg); |
28249
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1696 case MSIM_BM_STATUS_MOOD: |
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
28233
diff
changeset
|
1697 return msim_incoming_status_mood(session, msg); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1698 default: |
28233
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1699 /* |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1700 * Unknown message type! We used to call |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1701 * msim_incoming_action_or_im(session, msg); |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1702 * for these, but that doesn't help anything, and it means |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1703 * we'll show broken gibberish if MySpace starts sending us |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1704 * other message types. |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1705 */ |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1706 purple_debug_warning("myspace", "Received unknown imcoming " |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1707 "message, bm=%u\n", bm); |
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27463
diff
changeset
|
1708 return TRUE; |
24731
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 } |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1713 * Process the initial server information from the server. |
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 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1716 msim_process_server_info(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1717 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1718 MsimMessage *body; |
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 body = msim_msg_get_dictionary(msg, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1721 g_return_val_if_fail(body != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1722 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1723 /* Example body: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1724 AdUnitRefreshInterval=10. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1725 AlertPollInterval=360. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1726 AllowChatRoomEmoticonSharing=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1727 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1728 CurClientVersion=673. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1729 EnableIMBrowse=True. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1730 EnableIMStuffAvatars=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1731 EnableIMStuffZaps=False. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1732 MaxAddAllFriends=100. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1733 MaxContacts=1000. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1734 MinClientVersion=594. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1735 MySpaceIM_ENGLISH=78744676. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1736 MySpaceNowTimer=720. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1737 PersistenceDataTimeout=900. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1738 UseWebChallenge=1. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1739 WebTicketGoHome=False |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1740 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1741 Anything useful? TODO: use what is useful, and use it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1742 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1743 purple_debug_info("msim_process_server_info", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1744 "maximum contacts: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1745 msim_msg_get_integer(body, "MaxContacts")); |
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 session->server_info = body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1748 /* session->server_info freed in msim_session_destroy */ |
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 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1751 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1752 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1753 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1754 * Process a web challenge, used to login to the web site. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1755 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1756 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1757 msim_web_challenge(MsimSession *session, MsimMessage *msg) |
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 /* TODO: web challenge, store token. #2659. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1760 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1761 } |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1764 * Process a persistance message reply from the 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 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1767 * @param msg Message reply from server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1768 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1769 * @return TRUE if successful. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1770 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1771 * msim_lookup_user sets callback for here |
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 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1774 msim_process_reply(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1775 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1776 MSIM_USER_LOOKUP_CB cb; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1777 gpointer data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1778 guint rid, cmd, dsn, lid; |
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 g_return_val_if_fail(msg != NULL, FALSE); |
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 msim_store_user_info(session, msg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1783 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1784 rid = msim_msg_get_integer(msg, "rid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1785 cmd = msim_msg_get_integer(msg, "cmd"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1786 dsn = msim_msg_get_integer(msg, "dsn"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1787 lid = msim_msg_get_integer(msg, "lid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1788 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1789 /* Unsolicited messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1790 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1791 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1792 return msim_process_server_info(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1793 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1794 return msim_web_challenge(session, msg); |
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 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1797 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1798 /* 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
|
1799 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1800 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1801 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1802 if (cb) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1803 purple_debug_info("msim", "msim_process_reply: calling callback now\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1804 /* 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
|
1805 cb(session, msg, data); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1806 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1807 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1808 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1809 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1810 "msim_process_reply: no callback for rid %d\n", rid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1811 } |
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 return TRUE; |
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 |
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 * Handle an error from the server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1818 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1819 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1820 * @param msg The message. |
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 * @return TRUE if successfully reported error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1823 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1824 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1825 msim_error(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1826 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1827 gchar *errmsg, *full_errmsg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1828 guint err; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1829 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1830 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1831 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1832 err = msim_msg_get_integer(msg, "err"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1833 errmsg = msim_msg_get_string(msg, "errmsg"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1834 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1835 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
|
1836 errmsg ? errmsg : "no 'errmsg' given"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1837 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1838 g_free(errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1839 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1840 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1841 session->sesskey, full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1842 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1843 /* Destroy session if fatal. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1844 if (msim_msg_get(msg, "fatal")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1845 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1846 purple_debug_info("msim", "fatal error, closing\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1847 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1848 switch (err) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1849 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1850 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1851 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1852 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1853 #ifdef MSIM_MAX_PASSWORD_LENGTH |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1854 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1855 gchar *suggestion; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1856 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1857 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
|
1858 "%zu characters, which is longer than the " |
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27109
diff
changeset
|
1859 "maximum length of %d. Please shorten your " |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1860 "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
|
1861 full_errmsg, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1862 strlen(session->account->password), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1863 MSIM_MAX_PASSWORD_LENGTH); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1864 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1865 /* Replace full_errmsg. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1866 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1867 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
|
1868 } else { |
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27209
diff
changeset
|
1869 g_free(full_errmsg); |
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27209
diff
changeset
|
1870 full_errmsg = g_strdup(_("Incorrect username or password")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1871 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1872 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1873 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1874 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1875 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1876 if (!purple_account_get_remember_password(session->account)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1877 purple_account_set_password(session->account, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1878 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1879 } |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
1880 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
|
1881 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1882 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1883 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1884 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1885 g_free(full_errmsg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1886 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1887 return TRUE; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1891 * Process a message. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1892 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1893 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1894 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1895 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1896 * @return TRUE if successful. FALSE if processing failed. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1897 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1898 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1899 msim_process(MsimSession *session, MsimMessage *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1900 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1901 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1902 g_return_val_if_fail(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1903 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1904 if (msim_msg_get_integer(msg, "lc") == 1) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1905 return msim_login_challenge(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1906 } else if (msim_msg_get_integer(msg, "lc") == 2) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1907 /* return msim_we_are_logged_on(session, msg); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1908 if (msim_is_username_set(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1909 return msim_we_are_logged_on(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1910 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1911 /* No username is set... We'll wait for the callbacks to do their work */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1912 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1913 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1914 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1915 } else if (msim_msg_get(msg, "bm")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1916 return msim_incoming_bm(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1917 } else if (msim_msg_get(msg, "rid")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1918 return msim_process_reply(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1919 } else if (msim_msg_get(msg, "error")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1920 return msim_error(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1921 } else if (msim_msg_get(msg, "ka")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1922 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1923 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1924 msim_unrecognized(session, msg, "in msim_process"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1925 return FALSE; |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1930 * After a uid is resolved to username, tag it with the username and submit for processing. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1931 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1932 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1933 * @param userinfo Response messsage to resolving request. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1934 * @param data MsimMessage *, the message to attach information to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1935 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1936 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
1937 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1938 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1939 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1940 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1941 MsimMessage *msg, *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1942 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1943 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(msg != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1979 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1980 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1981 guint uid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1982 const gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1983 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1984 /* 'f' = userid message is from, in buddy messages */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1985 uid = msim_msg_get_integer(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1986 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1987 username = msim_uid2username_from_blist(session->account, uid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1988 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1989 if (username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1990 /* Know username already, use it. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1991 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1992 username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1993 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1994 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1995 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1996 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1997 gchar *from; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1998 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
1999 /* Send lookup request. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2000 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2001 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2002 from = msim_msg_get_string(msg, "f"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2003 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2004 g_free(from); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2005 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2006 /* indeterminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2007 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2008 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2009 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2010 /* Nothing to resolve - send directly to processing. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2011 return msim_process(session, msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2012 } |
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 * Callback when input available. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2017 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2018 * @param gc_uncasted A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2019 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2020 * @param cond PURPLE_INPUT_READ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2021 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2022 * Reads the input, and calls msim_preprocess_incoming() to handle it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2023 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2024 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2025 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2026 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2027 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2028 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2029 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2030 gchar *end; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2031 int n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2032 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2033 g_return_if_fail(gc_uncasted != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2034 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2035 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2036 gc = (PurpleConnection *)(gc_uncasted); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2037 account = purple_connection_get_account(gc); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2038 session = gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2039 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2040 /* libpurple/eventloop.h only defines these two */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2041 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2042 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2043 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2044 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2045 _("Invalid input condition")); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2046 return; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2047 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2048 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2049 g_return_if_fail(cond == PURPLE_INPUT_READ); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2050 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2051 /* Mark down that we got data, so we don't timeout. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2052 session->last_comm = time(NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2053 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2054 /* If approaching end of buffer, reallocate some more memory. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2055 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2056 purple_debug_info("msim", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2057 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2058 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2059 session->rxsize += MSIM_READ_BUF_SIZE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2060 session->rxbuf = g_realloc(session->rxbuf, session->rxsize); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2061 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2062 return; |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2065 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2066 session->rxoff, session->rxsize, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2067 MSIM_READ_BUF_SIZE - session->rxoff - 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2068 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2069 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2070 * the file descriptor, but it sometimes differs from the 'source' parameter. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2071 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2072 n = recv(session->fd, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2073 session->rxbuf + session->rxoff, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2074 session->rxsize - session->rxoff - 1, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2075 |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2076 if (n < 0) { |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2077 gchar *tmp; |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2078 |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2079 if (errno == EAGAIN) |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2080 /* No worries */ |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2081 return; |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2082 |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2083 tmp = g_strdup_printf(_("Lost connection with server: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2084 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2085 purple_connection_error_reason(gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2086 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2087 g_free(tmp); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2088 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2089 } else if (n == 0) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2090 purple_connection_error_reason(gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2091 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2092 _("Server closed the connection")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2093 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2094 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2095 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2096 /* Null terminate */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2097 purple_debug_info("msim", "msim_input_cb: going to null terminate " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2098 "at n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2099 session->rxbuf[session->rxoff + n] = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2100 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2101 #ifdef MSIM_CHECK_EMBEDDED_NULLS |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2102 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2103 if (strlen(session->rxbuf + session->rxoff) != n) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2104 /* Occurs after login, but it is not a null byte. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2105 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2106 "--null byte encountered?\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2107 strlen(session->rxbuf + session->rxoff), n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2108 /*purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2109 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2110 "Invalid message - null byte on input"); */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2111 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2112 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2113 #endif |
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 session->rxoff += n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2116 purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2117 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2118 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2119 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2120 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2121 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2122 /* Look for \\final\\ end markers. If found, process message. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2123 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2124 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2125 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2126 #ifdef MSIM_DEBUG_RXBUF |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2127 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2128 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2129 *end = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2130 msg = msim_parse(session->rxbuf); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2131 if (!msg) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2132 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2133 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2134 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2135 _("Unable to parse message")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2136 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2137 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2138 /* Process message and then free it (processing function should |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2139 * clone message if it wants to keep it afterwards.) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2140 if (!msim_preprocess_incoming(session, msg)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2141 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2142 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2143 msim_msg_free(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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2146 /* Move remaining part of buffer to beginning. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2147 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2148 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2149 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2150 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2151 /* Clear end of buffer |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2152 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2153 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2154 } |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2155 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2156 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2157 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2158 * Callback when connected. Sets up input handlers. |
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 * @param data A PurpleConnection pointer. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2161 * @param source File descriptor. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2162 * @param error_message |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2163 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2164 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2165 msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2166 { |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2167 PurpleConnection *gc; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2168 MsimSession *session; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2169 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2170 g_return_if_fail(data != NULL); |
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 gc = (PurpleConnection *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2173 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2174 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2175 if (source < 0) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2176 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2177 error_message); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2178 purple_connection_error_reason (gc, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2179 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2180 g_free(tmp); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2181 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2182 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2183 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2184 session->fd = source; |
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 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
|
2187 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2188 |
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 * Start logging in to the MSIM servers. |
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 * @param acct Account information to use to login. |
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 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2195 msim_login(PurpleAccount *acct) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2196 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2197 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2198 const gchar *host; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2199 int port; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2200 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2201 g_return_if_fail(acct != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2202 g_return_if_fail(acct->username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2203 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2204 purple_debug_info("msim", "logging in %s\n", acct->username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2205 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2206 gc = purple_account_get_connection(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2207 gc->proto_data = msim_session_new(acct); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2208 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2209 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2210 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2211 * Lets wipe out our local list of blocked buddies. We'll get a |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2212 * list of all blocked buddies from the server, and we shouldn't |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2213 * have stuff in the local list that isn't on the server list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2214 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2215 while (acct->deny != NULL) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2216 purple_privacy_deny_remove(acct, acct->deny->data, TRUE); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2217 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2218 /* 1. connect to server */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2219 purple_connection_update_progress(gc, _("Connecting"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2220 0, /* which connection step this is */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2221 4); /* total number of steps */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2222 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2223 host = purple_account_get_string(acct, "server", MSIM_SERVER); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2224 port = purple_account_get_int(acct, "port", MSIM_PORT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2225 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2226 /* From purple.sf.net/api: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2227 * """Note that this function name can be misleading--although it is called |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2228 * "proxy connect," it is used for establishing any outgoing TCP connection, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2229 * whether through a proxy or not.""" */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2230 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2231 /* Calls msim_connect_cb when connected. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2232 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2233 /* TODO: try other ports if in auto mode, then save |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2234 * working port and try that first next time. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2235 purple_connection_error_reason (gc, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2236 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27462
diff
changeset
|
2237 _("Unable to connect")); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2238 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2239 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2240 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2241 |
29365
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2242 static void |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2243 msim_buddy_free(PurpleBuddy *buddy) |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2244 { |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2245 msim_user_free(purple_buddy_get_protocol_data(buddy)); |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2246 purple_buddy_set_protocol_data(buddy, NULL); |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2247 } |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2248 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2249 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2250 * Close the connection. |
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 * @param gc The connection. |
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 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2255 msim_close(PurpleConnection *gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2256 { |
29365
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2257 GSList *buddies; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2258 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2259 |
29369
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
29367
diff
changeset
|
2260 if (gc == NULL) { |
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
29367
diff
changeset
|
2261 return; |
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
29367
diff
changeset
|
2262 } |
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
29367
diff
changeset
|
2263 |
29365
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2264 /* |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2265 * Free our protocol-specific buddy data. It almost seems like libpurple |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2266 * should call our buddy_free prpl callback so that we don't need to do |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2267 * this... but it doesn't, so we do. |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2268 */ |
29370
1386a0e22ac7
Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents:
29369
diff
changeset
|
2269 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL); |
29365
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2270 while (buddies != NULL) { |
29370
1386a0e22ac7
Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents:
29369
diff
changeset
|
2271 msim_buddy_free(buddies->data); |
29365
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2272 buddies = g_slist_delete_link(buddies, buddies); |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2273 } |
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
29276
diff
changeset
|
2274 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2275 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2276 if (session == NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2277 return; |
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 gc->proto_data = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2280 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2281 if (session->gc->inpa) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2282 purple_input_remove(session->gc->inpa); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2283 } |
24767
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2284 if (session->fd >= 0) { |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2285 close(session->fd); |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2286 session->fd = -1; |
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24763
diff
changeset
|
2287 } |
24731
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 msim_session_destroy(session); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2290 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2291 |
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 * 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
|
2294 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2295 * @param gc Connection. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2296 * @param who A user id, email, or username to send the message to. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2297 * @param message Instant message text to send. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2298 * @param flags Flags. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2299 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2300 * @return 1 if successful or postponed, -1 if failed |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2301 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2302 * 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
|
2303 * a username or email address is given, the userid must be looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2304 * This function does that by calling msim_postprocess_outgoing(). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2305 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2306 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2307 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2308 PurpleMessageFlags flags) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2309 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2310 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2311 gchar *message_msim; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2312 int rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2313 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2314 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2315 g_return_val_if_fail(who != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2316 g_return_val_if_fail(message != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2317 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2318 /* 'flags' has many options, not used here. */ |
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 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2321 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2322 message_msim = html_to_msim_markup(session, message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2323 |
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
|
2324 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
|
2325 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2326 * return 1 even if the message could not be sent, since I don't know if |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2327 * it has failed yet--because the IM is only sent after the userid is |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2328 * retrieved from the server (which happens after this function returns). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2329 * If an error does occur, it should be logged to the IM window. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2330 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2331 rc = 1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2332 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2333 rc = -1; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2334 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2335 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2336 g_free(message_msim); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2337 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2338 return rc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2339 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2340 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2341 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2342 * Handle when our user starts or stops typing to another user. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2343 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2344 * @param gc |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2345 * @param name The buddy name to which our user is typing to |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2346 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2347 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2348 * @return 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2349 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2350 static unsigned int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2351 msim_send_typing(PurpleConnection *gc, const gchar *name, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2352 PurpleTypingState state) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2353 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2354 const gchar *typing_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2355 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2356 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2357 g_return_val_if_fail(gc != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2358 g_return_val_if_fail(name != NULL, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2359 |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2360 session = (MsimSession *)gc->proto_data; |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2361 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2362 switch (state) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2363 case PURPLE_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2364 typing_str = "%typing%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2365 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2366 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2367 case PURPLE_TYPED: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2368 case PURPLE_NOT_TYPING: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2369 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2370 typing_str = "%stoptyping%"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2371 break; |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2374 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
|
2375 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
|
2376 return 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2377 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2378 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2379 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2380 * 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
|
2381 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2382 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
2383 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
|
2384 gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2385 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2386 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2387 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2388 PurpleNotifyUserInfo *user_info; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2389 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2390 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2391 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2392 orthogonality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2393 msg = (MsimMessage *)data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2394 g_return_if_fail(msg != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2395 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2396 username = msim_msg_get_string(msg, "user"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2397 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2398 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2399 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2400 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2401 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2402 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2403 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2404 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2405 user = msim_find_user(session, username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2406 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2407 if (!user) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2408 /* User isn't on blist, create a temporary user to store info. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2409 user = g_new0(MsimUser, 1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2410 user->temporary_user = TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2411 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2412 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2413 /* Update user structure with new information */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2414 msim_store_user_info(session, user_info_msg, user); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2415 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2416 user_info = purple_notify_user_info_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2417 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2418 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2419 msim_append_user_info(session, user_info, user, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2420 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2421 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2422 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2423 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2424 purple_notify_user_info_destroy(user_info); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2425 |
29276
5a367a023195
Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents:
28249
diff
changeset
|
2426 if (user->temporary_user) |
5a367a023195
Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents:
28249
diff
changeset
|
2427 msim_user_free(user); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2428 g_free(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2429 } |
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 * Retrieve a user's profile. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2433 * @param username Username, user ID, or email address to lookup. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2434 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2435 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2436 msim_get_info(PurpleConnection *gc, const gchar *username) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2437 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2438 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2439 MsimUser *user; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2440 gchar *user_to_lookup; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2441 MsimMessage *user_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2442 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2443 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2444 g_return_if_fail(username != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2445 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2446 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2447 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2448 /* Obtain uid of buddy. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2449 user = msim_find_user(session, username); |
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 /* 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
|
2452 if (user && user->id) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2453 user_to_lookup = g_strdup_printf("%d", user->id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2454 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2455 /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2456 user_to_lookup = g_strdup(username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2457 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2458 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2459 /* 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
|
2460 * 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
|
2461 * the username) but it would be useful to display the username too. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2462 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2463 user_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2464 "user", MSIM_TYPE_STRING, g_strdup(username), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2465 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2466 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2467 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2468 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2469 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2470 g_free(user_to_lookup); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2471 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2472 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2473 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2474 * Set status using an MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2475 * @param status_code An MSIM_STATUS_CODE_* value. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2476 * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2477 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2478 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2479 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2480 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2481 g_return_if_fail(statstring != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2482 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2483 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2484 status_code, statstring); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2485 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2486 if (!msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2487 "status", MSIM_TYPE_INTEGER, status_code, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2488 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2489 "statstring", MSIM_TYPE_STRING, statstring, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2490 "locstring", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2491 NULL)) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2492 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2493 purple_debug_info("msim", "msim_set_status: failed to set status\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2494 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2495 } |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2498 * Set your status - callback for when user manually sets it. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2499 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2500 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2501 msim_set_status(PurpleAccount *account, PurpleStatus *status) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2502 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2503 PurpleStatusType *type; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2504 PurplePresence *pres; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2505 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2506 guint status_code; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2507 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2508 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2509 gchar *unrecognized_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2510 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2511 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2512 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2513 type = purple_status_get_type(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2514 pres = purple_status_get_presence(status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2515 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2516 switch (purple_status_type_get_primitive(type)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2517 case PURPLE_STATUS_AVAILABLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2518 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2519 MSIM_STATUS_CODE_ONLINE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2520 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2521 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2522 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2523 case PURPLE_STATUS_INVISIBLE: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2524 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2525 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2526 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
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_AWAY: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2530 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2531 MSIM_STATUS_CODE_AWAY); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2532 status_code = MSIM_STATUS_CODE_AWAY; |
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 default: |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2536 purple_debug_info("msim", "msim_set_status: unknown " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2537 "status interpreting as online"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2538 status_code = MSIM_STATUS_CODE_ONLINE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2539 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2540 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2541 purple_status_type_get_primitive(type)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2542 msim_unrecognized(session, NULL, unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2543 g_free(unrecognized_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2544 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2545 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2546 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2547 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2548 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2549 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2550 /* Status strings are plain text. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2551 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2552 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2553 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2554 stripped = g_strdup(""); |
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 msim_set_status_code(session, status_code, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2557 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2558 /* If we should be idle, set that status. Time is irrelevant here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2559 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2560 msim_set_idle(account->gc, 1); |
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 |
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 * Go idle. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2565 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2566 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2567 msim_set_idle(PurpleConnection *gc, int time) |
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 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2570 PurpleStatus *status; |
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 g_return_if_fail(gc != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2573 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2574 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2575 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2576 status = purple_account_get_active_status(session->account); |
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 if (time == 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2579 /* Going back from idle. In msim, idle is mutually exclusive |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2580 * from the other states (you can only be away or idle, but not |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2581 * both, for example), so by going non-idle I go back to what |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2582 * libpurple says I should be. |
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 msim_set_status(session->account, status); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2585 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2586 const gchar *message; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2587 gchar *stripped; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2588 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2589 /* Set the idle message to the status message from the real |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2590 * current status. |
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 message = purple_status_get_attr_string(status, "message"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2593 if (message != NULL) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2594 stripped = purple_markup_strip_html(message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2595 else |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2596 stripped = g_strdup(""); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2597 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2598 /* msim doesn't support idle time, so just go idle */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2599 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2600 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2601 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2602 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2603 /** |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2604 * @return TRUE if everything was ok, FALSE if something went awry. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2605 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2606 static gboolean |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2607 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2608 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2609 MsimMessage *msg; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2610 GList *list; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2611 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2612 list = NULL; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2613 list = g_list_prepend(list, allow ? "a+" : "a-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2614 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2615 list = g_list_prepend(list, block ? "b+" : "b-"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2616 list = g_list_prepend(list, "<uid>"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2617 list = g_list_reverse(list); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2618 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2619 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2620 "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2621 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2622 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2623 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2624 "idlist", MSIM_TYPE_LIST, list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2625 NULL); |
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 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
|
2628 purple_debug_error("myspace", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2629 "blocklist command failed for %s, allow=%d, block=%d\n", |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2630 name, allow, block); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2631 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2632 return FALSE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2633 } |
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 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2636 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2637 return TRUE; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2638 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2639 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2640 /** |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2641 * Add a buddy to user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2642 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2643 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2644 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2645 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2646 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2647 MsimMessage *msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2648 MsimMessage *msg_persist; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2649 MsimMessage *body; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2650 const char *name, *gname; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2651 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2652 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2653 name = purple_buddy_get_name(buddy); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2654 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
|
2655 |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2656 if (msim_get_user_from_buddy(buddy, FALSE) != NULL) |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2657 return; |
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24409
diff
changeset
|
2658 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2659 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
|
2660 name, gname ? gname : "(no group)"); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2661 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2662 msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2663 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2664 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2665 /* "newprofileid" will be inserted here with uid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2666 "reason", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2667 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2668 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2669 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
|
2670 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2671 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2672 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2673 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2674 msim_msg_free(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2675 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2676 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2677 * buddy list since Purple adds it locally. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2678 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2679 body = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2680 "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
|
2681 "GroupName", MSIM_TYPE_STRING, g_strdup(gname), |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2682 "Position", MSIM_TYPE_INTEGER, 1000, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2683 "Visibility", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2684 "NickName", MSIM_TYPE_STRING, g_strdup(""), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2685 "NameSelect", MSIM_TYPE_INTEGER, 0, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2686 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2687 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2688 /* TODO: Update blocklist. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2689 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2690 msg_persist = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2691 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2692 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2693 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2694 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2695 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2696 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2697 /* TODO: Use msim_new_reply_callback to get rid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2698 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2699 "body", MSIM_TYPE_DICTIONARY, body, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2700 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2701 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2702 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
|
2703 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2704 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2705 msim_msg_free(msg_persist); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2706 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2707 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2708 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
|
2709 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2710 /* Add to allow list, remove from block list */ |
25378
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2711 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
|
2712 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2713 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2714 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2715 * Remove a buddy from the user's buddy list. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2716 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2717 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2718 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2719 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2720 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2721 MsimMessage *delbuddy_msg; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2722 MsimMessage *persist_msg; |
25377
a4a17fe80160
explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2723 const char *name; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2724 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2725 session = (MsimSession *)gc->proto_data; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2726 name = purple_buddy_get_name(buddy); |
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 delbuddy_msg = msim_msg_new( |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2729 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2730 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2731 /* 'delprofileid' with uid will be inserted here. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2732 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2733 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2734 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
|
2735 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2736 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2737 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2738 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2739 msim_msg_free(delbuddy_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2740 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2741 persist_msg = msim_msg_new( |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2742 "persist", MSIM_TYPE_INTEGER, 1, |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2743 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2744 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2745 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2746 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2747 "uid", MSIM_TYPE_INTEGER, session->userid, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2748 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2749 /* <uid> will be replaced by postprocessing */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2750 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2751 NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2752 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23334
diff
changeset
|
2753 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
|
2754 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2755 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2756 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2757 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2758 msim_msg_free(persist_msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2759 |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2760 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2761 * Remove from our approve list and from our block list (this |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2762 * doesn't seem like it would be necessary, but the official client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2763 * does it) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2764 */ |
25383 | 2765 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
|
2766 purple_notify_error(NULL, NULL, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2767 _("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
|
2768 return; |
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
2769 } |
25382
c0b42d6c2785
propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2770 msim_buddy_free(buddy); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2771 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2772 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2773 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2774 * Remove 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
|
2775 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2776 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2777 msim_add_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2778 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2779 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2780 MsimMessage *msg, *body; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2781 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2782 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2783 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2784 /* Remove from buddy list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2785 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2786 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2787 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2788 /* 'delprofileid' with uid will be inserted here. */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2789 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2790 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2791 purple_debug_error("myspace", "delbuddy command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2792 msim_msg_free(msg); |
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 /* 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
|
2795 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
|
2796 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2797 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2798 * Add the buddy to our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2799 * are blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2800 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2801 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2802 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2803 "Visibility", MSIM_TYPE_INTEGER, 2, |
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 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2806 "persist", MSIM_TYPE_INTEGER, 1, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2807 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2808 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2809 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2810 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2811 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2812 "body", MSIM_TYPE_DICTIONARY, body, |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2813 NULL); |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2814 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2815 purple_debug_error("myspace", "add to block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2816 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2817 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2818 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2819 * TODO: MySpace doesn't allow blocked buddies on our buddy list, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2820 * do they? If not then we need to remove the buddy from |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2821 * libpurple's buddy list. |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2822 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2823 } |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2824 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2825 /** |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2826 * 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
|
2827 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2828 static void |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2829 msim_rem_deny(PurpleConnection *gc, const char *name) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2830 { |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2831 MsimSession *session; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2832 MsimMessage *msg, *body; |
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 session = (MsimSession *)gc->proto_data; |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2835 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2836 /* |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2837 * Remove from our list of blocked contacts, so we know they |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2838 * are no longer blocked if we log in with another client |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2839 */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2840 body = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2841 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2842 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2843 msg = msim_msg_new( |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2844 "persist", MSIM_TYPE_INTEGER, 1, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2845 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2846 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2847 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2848 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2849 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2850 "body", MSIM_TYPE_DICTIONARY, body, |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2851 NULL); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2852 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2853 purple_debug_error("myspace", "remove from block list command failed\n"); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2854 msim_msg_free(msg); |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2855 |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2856 /* Remove from our approve list and our block list */ |
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
2857 msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); |
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2858 } |
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2859 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2860 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2861 * Returns a string of a username in canonical form. Basically removes all the |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2862 * spaces, lowercases the string, and looks up user IDs to usernames. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2863 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2864 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2865 * Borrowed this code from oscar_normalize. Added checking for |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2866 * "if userid, get name before normalizing" |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2867 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2868 static const char *msim_normalize(const PurpleAccount *account, const char *str) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2869 static char normalized[BUF_LEN]; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2870 char *tmp1, *tmp2; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2871 int i, j; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2872 guint id; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2873 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2874 g_return_val_if_fail(str != NULL, NULL); |
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 if (msim_is_userid(str)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2877 /* Have user ID, we need to get their username first :) */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2878 const char *username; |
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 /* 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
|
2881 if (!account || !account->gc) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2882 return str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2883 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2884 id = atol(str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2885 username = msim_uid2username_from_blist((PurpleAccount *)account, id); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2886 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2887 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2888 /* Note: manual lookup using msim_lookup_user() is a problem inside |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2889 * msim_normalize(), because msim_lookup_user() calls a callback function |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2890 * when the user information has been looked up, but msim_normalize() expects |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2891 * the result immediately. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2892 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2893 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2894 strncpy(normalized, username, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2895 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2896 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2897 /* Have username. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2898 strncpy(normalized, str, BUF_LEN); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2899 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2900 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2901 /* Strip spaces. */ |
24894
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2902 for (i=0, j=0; normalized[j]; j++) { |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2903 if (normalized[j] != ' ') |
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24853
diff
changeset
|
2904 normalized[i++] = normalized[j]; |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2905 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2906 normalized[i] = '\0'; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2907 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2908 /* Lowercase and perform UTF-8 normalization. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2909 tmp1 = g_utf8_strdown(normalized, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2910 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2911 g_snprintf(normalized, sizeof(normalized), "%s", tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2912 g_free(tmp2); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2913 g_free(tmp1); |
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 /* 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
|
2916 * 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
|
2917 * as 'MsIm PrPl' in the official client. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2918 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2919 * TODO: file a ticket to add this enhancement. |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2922 return normalized; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2923 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2924 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2925 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2926 * Return whether the buddy can be messaged while offline. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2927 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2928 * 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
|
2929 * messages. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2930 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2931 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2932 msim_offline_message(const PurpleBuddy *buddy) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2933 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2934 return TRUE; |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2935 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2936 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2937 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2938 * 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
|
2939 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2940 * Used in prpl_info struct, so that plugins can have the most possible |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2941 * control of what is sent over the connection. Inside this prpl, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2942 * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2943 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2944 * @param gc PurpleConnection |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2945 * @param buf Buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2946 * @param total_bytes Size of buffer to send |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2947 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2948 * @return Bytes successfully sent, or -1 on error. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2949 */ |
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
|
2950 /* |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2951 * TODO: This needs to do non-blocking writes and use a watcher to check |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2952 * when the fd is available to be written to. |
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24735
diff
changeset
|
2953 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2954 static int |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2955 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2956 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2957 int total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2958 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2959 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2960 g_return_val_if_fail(gc != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2961 g_return_val_if_fail(buf != NULL, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2962 g_return_val_if_fail(total_bytes >= 0, -1); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2963 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2964 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2965 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2966 /* 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
|
2967 total_bytes_sent = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2968 do { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2969 int bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2970 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2971 bytes_sent = send(session->fd, buf + total_bytes_sent, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2972 total_bytes - total_bytes_sent, 0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2973 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2974 if (bytes_sent < 0) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2975 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2976 buf, g_strerror(errno)); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2977 return total_bytes_sent; |
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 total_bytes_sent += bytes_sent; |
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 } while(total_bytes_sent < total_bytes); |
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 return total_bytes_sent; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2984 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2985 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2986 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2987 * 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
|
2988 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2989 * @param session |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2990 * @param msg The raw data to send, in a NUL-terminated string. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2991 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2992 * @return TRUE if succeeded, FALSE if not. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2993 * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2994 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2995 gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2996 msim_send_raw(MsimSession *session, const gchar *msg) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2997 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2998 size_t len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
2999 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3000 g_return_val_if_fail(msg != NULL, FALSE); |
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 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
|
3003 len = strlen(msg); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3004 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3005 return msim_send_really_raw(session->gc, msg, len) == len; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3006 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3007 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3008 static GHashTable * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3009 msim_get_account_text_table(PurpleAccount *unused) |
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 GHashTable *table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3012 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3013 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
|
3014 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3015 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address...")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3016 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3017 return table; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3018 } |
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3021 * Callbacks called by Purple, to access this plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3022 */ |
20057 | 3023 static PurplePluginProtocolInfo prpl_info = { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3024 /* options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3025 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3026 | OPT_PROTO_MAIL_CHECK, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3027 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3028 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3029 NULL, /* user_splits */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3030 NULL, /* protocol_options */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3031 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3032 msim_list_icon, /* list_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3033 NULL, /* list_emblems */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3034 msim_status_text, /* status_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3035 msim_tooltip_text, /* tooltip_text */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3036 msim_status_types, /* status_types */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3037 msim_blist_node_menu, /* blist_node_menu */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3038 NULL, /* chat_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3039 NULL, /* chat_info_defaults */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3040 msim_login, /* login */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3041 msim_close, /* close */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3042 msim_send_im, /* send_im */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3043 NULL, /* set_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3044 msim_send_typing, /* send_typing */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3045 msim_get_info, /* get_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3046 msim_set_status, /* set_status */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3047 msim_set_idle, /* set_idle */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3048 NULL, /* change_passwd */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3049 msim_add_buddy, /* add_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3050 NULL, /* add_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3051 msim_remove_buddy, /* remove_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3052 NULL, /* remove_buddies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3053 NULL, /* add_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3054 msim_add_deny, /* add_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3055 NULL, /* rem_permit */ |
24750
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24748
diff
changeset
|
3056 msim_rem_deny, /* rem_deny */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3057 NULL, /* set_permit_deny */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3058 NULL, /* join_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3059 NULL, /* reject chat invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3060 NULL, /* get_chat_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3061 NULL, /* chat_invite */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3062 NULL, /* chat_leave */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3063 NULL, /* chat_whisper */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3064 NULL, /* chat_send */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3065 NULL, /* keepalive */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3066 NULL, /* register_user */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3067 NULL, /* get_cb_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3068 NULL, /* get_cb_away */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3069 NULL, /* alias_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3070 NULL, /* group_buddy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3071 NULL, /* rename_group */ |
24853
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24770
diff
changeset
|
3072 msim_buddy_free, /* buddy_free */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3073 NULL, /* convo_closed */ |
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
3074 msim_normalize, /* normalize */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3075 NULL, /* set_buddy_icon */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3076 NULL, /* remove_group */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3077 NULL, /* get_cb_real_name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3078 NULL, /* set_chat_topic */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3079 NULL, /* find_blist_chat */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3080 NULL, /* roomlist_get_list */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3081 NULL, /* roomlist_cancel */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3082 NULL, /* roomlist_expand_category */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3083 NULL, /* can_receive_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3084 NULL, /* send_file */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3085 NULL, /* new_xfer */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3086 msim_offline_message, /* offline_message */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3087 NULL, /* whiteboard_prpl_ops */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3088 msim_send_really_raw, /* send_raw */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3089 NULL, /* roomlist_room_serialize */ |
19712
eabc8a32b1e4
Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
3090 NULL, /* unregister_user */ |
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3091 msim_send_attention, /* send_attention */ |
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3092 msim_attention_types, /* attention_types */ |
26062
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3093 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
|
3094 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
|
3095 NULL, /* initiate_media */ |
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3096 NULL /* can_do_media */ |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3097 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3098 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3099 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3100 * Load the plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3101 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3102 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3103 msim_load(PurplePlugin *plugin) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3104 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3105 /* If compiled to use RC4 from libpurple, check if it is really there. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3106 if (!purple_ciphers_find_cipher("rc4")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3107 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3108 purple_notify_error(plugin, _("Missing Cipher"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3109 _("The RC4 cipher could not be found"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3110 _("Upgrade " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3111 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3112 "plugin will not be loaded.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3113 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3114 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3115 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3116 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3117 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3118 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3119 * Called when friends have been imported to buddy list on server. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3120 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3121 static void |
24764
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24763
diff
changeset
|
3122 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
|
3123 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3124 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3125 gchar *completed; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3126 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3127 /* Check if the friends were imported successfully. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3128 body = msim_msg_get_dictionary(reply, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3129 g_return_if_fail(body != NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3130 completed = msim_msg_get_string(body, "Completed"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3131 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
|
3132 g_return_if_fail(completed != NULL); |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3133 if (!g_str_equal(completed, "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 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3136 "failed to import friends: %s", completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3137 purple_notify_error(session->account, _("Add friends from MySpace.com"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3138 _("Importing friends failed"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3139 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3140 return; |
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 g_free(completed); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3143 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3144 purple_debug_info("msim_import_friends_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3145 "added friends to server-side buddy list, requesting new contacts from server"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3146 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3147 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3148 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3149 /* TODO: show, X friends have been added */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3150 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3151 |
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 * Import friends from myspace.com. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3154 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3155 static void msim_import_friends(PurplePluginAction *action) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3156 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3157 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3158 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3159 gchar *group_name; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3160 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3161 gc = (PurpleConnection *)action->context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3162 session = (MsimSession *)gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3163 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3164 group_name = "MySpace Friends"; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3165 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3166 g_return_if_fail(msim_send(session, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3167 "persist", MSIM_TYPE_INTEGER, 1, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3168 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3169 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3170 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3171 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3172 "uid", MSIM_TYPE_INTEGER, session->userid, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3173 "rid", MSIM_TYPE_INTEGER, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3174 msim_new_reply_callback(session, msim_import_friends_cb, NULL), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3175 "body", MSIM_TYPE_STRING, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3176 g_strdup_printf("GroupName=%s", group_name), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3177 NULL)); |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3180 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3181 * Actions menu for account. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3182 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3183 static GList * |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3184 msim_actions(PurplePlugin *plugin, gpointer context) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3185 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3186 PurpleConnection *gc; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3187 GList *menu; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3188 PurplePluginAction *act; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3189 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3190 gc = (PurpleConnection *)context; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3191 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3192 menu = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3193 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3194 #if 0 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3195 /* TODO: find out how */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3196 act = purple_plugin_action_new(_("Find people..."), msim_); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3197 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3198 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3199 act = purple_plugin_action_new(_("Change IM name..."), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3200 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3201 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3202 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3203 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
|
3204 menu = g_list_append(menu, act); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3205 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3206 return menu; |
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 |
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 * Based on MSN's plugin info comments. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3211 */ |
19720
b2d213681176
Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents:
19713
diff
changeset
|
3212 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
|
3213 PURPLE_PLUGIN_MAGIC, |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3214 PURPLE_MAJOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3215 PURPLE_MINOR_VERSION, |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3216 PURPLE_PLUGIN_PROTOCOL, /**< type */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3217 NULL, /**< ui_requirement */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3218 0, /**< flags */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3219 NULL, /**< dependencies */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3220 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3221 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3222 "prpl-myspace", /**< id */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3223 "MySpaceIM", /**< name */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3224 MSIM_PRPL_VERSION_STRING, /**< version */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3225 /** summary */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3226 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3227 /** description */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3228 "MySpaceIM Protocol Plugin", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3229 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3230 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3231 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3232 msim_load, /**< load */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3233 NULL, /**< unload */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3234 NULL, /**< destroy */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3235 NULL, /**< ui_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3236 &prpl_info, /**< extra_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3237 NULL, /**< prefs_info */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3238 msim_actions, /**< msim_actions */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3239 NULL, /**< reserved1 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3240 NULL, /**< reserved2 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3241 NULL, /**< reserved3 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3242 NULL /**< reserved4 */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3243 }; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3244 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3245 #ifdef MSIM_SELF_TEST |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3246 /* |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3247 * Test functions. |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3248 * Used to test or try out the internal workings of msimprpl. If you're reading |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3249 * this code for the first time, these functions can be instructive in learning |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3250 * how msimprpl is architected. |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3251 */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3252 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3253 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3254 * Test MsimMessage for basic functionality. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3255 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3256 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3257 msim_test_msg(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3258 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3259 MsimMessage *msg, *msg_cloned, *msg2; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3260 GList *list; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3261 gchar *packed, *packed_expected, *packed_cloned; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3262 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3263 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3264 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3265 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3266 purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3267 msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3268 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3269 /* Append some new elements. */ |
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
3270 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3)); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3271 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3272 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3273 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3274 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3275 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3276 msim_msg_dump("msg debug str=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3277 packed = msim_msg_pack(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3278 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3279 purple_debug_info("msim", "msg packed=%s\n", packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3280 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3281 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3282 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3283 |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3284 if (!g_str_equal(packed, packed_expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3285 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3286 ++failures, packed, packed_expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3287 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3288 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3289 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3290 msg_cloned = msim_msg_clone(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3291 packed_cloned = msim_msg_pack(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3292 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3293 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned); |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3294 if (!g_str_equal(packed, packed_cloned)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3295 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3296 ++failures, packed_cloned, packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3297 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3298 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3299 g_free(packed); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3300 g_free(packed_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3301 msim_msg_free(msg_cloned); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3302 msim_msg_free(msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3303 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3304 /* Try some of the more advanced functionality */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3305 list = NULL; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3306 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3307 list = g_list_prepend(list, "item3"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3308 list = g_list_prepend(list, "item2"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3309 list = g_list_prepend(list, "item1"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3310 list = g_list_prepend(list, "item0"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3311 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3312 msg = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3313 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3314 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3315 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3316 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3317 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3318 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3319 msim_msg_dump("msg with list=%s\n", msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3320 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3321 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3322 msg2 = msim_msg_new(NULL); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3323 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3324 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3325 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3326 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2)); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3327 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3328 msim_msg_free(msg2); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3329 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3330 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3331 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3332 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3333 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3334 * Test protocol-level escaping/unescaping. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3335 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3336 static int |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3337 msim_test_escaping(void) |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3338 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3339 guint failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3340 gchar *raw, *escaped, *unescaped, *expected; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3341 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3342 failures = 0; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3343 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3344 purple_debug_info("msim", "\n\nTesting escaping\n"); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3345 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3346 raw = "hello/world\\hello/world"; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3347 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3348 escaped = msim_escape(raw); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3349 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3350 expected = "hello/1world/2hello/1world"; |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3351 if (!g_str_equal(escaped, expected)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3352 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3353 ++failures, escaped, expected); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3354 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3355 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3356 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3357 unescaped = msim_unescape(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3358 g_free(escaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3359 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped); |
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3360 if (!g_str_equal(raw, unescaped)) { |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3361 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3362 ++failures, raw, unescaped); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3363 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3364 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3365 return failures; |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3366 } |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3367 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3368 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3369 msim_test_all(void) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3370 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3371 guint failures; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3372 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3373 failures = 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3374 failures += msim_test_msg(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3375 failures += msim_test_escaping(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3376 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3377 if (failures) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3378 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3379 } else { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3380 purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3381 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3382 exit(0); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3383 } |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3384 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3385 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3386 #ifdef MSIM_CHECK_NEWER_VERSION |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3387 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3388 * Callback for when a currentversion.txt has been downloaded. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3389 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3390 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3391 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3392 gpointer user_data, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3393 const gchar *url_text, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3394 gsize len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3395 const gchar *error_message) |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3396 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3397 GKeyFile *keyfile; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3398 GError *error; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3399 GString *data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3400 gchar *newest_filever; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3401 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3402 if (!url_text) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3403 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3404 "got error: %s\n", error_message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3405 return; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3406 } |
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 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3409 "url_text=%s\n", url_text ? url_text : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3410 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3411 /* Prepend [group] so that GKeyFile can parse it (requires a group). */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3412 data = g_string_new(url_text); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3413 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3414 ? data->str : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3415 data = g_string_prepend(data, "[group]\n"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3416 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3417 purple_debug_info("msim", "data=%s\n", data->str |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3418 ? data->str : "(NULL)"); |
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 /* url_text is variable=data\n...†*/ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3421 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3422 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3423 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */ |
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 error = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3426 keyfile = g_key_file_new(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3427 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3428 /* Default list seperator is ;, but currentversion.txt doesn't have |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3429 * these, so set to an unused character to avoid parsing problems. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3430 g_key_file_set_list_separator(keyfile, '\0'); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3431 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3432 g_key_file_load_from_data(keyfile, data->str, data->len, |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3433 G_KEY_FILE_NONE, &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3434 g_string_free(data, TRUE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3435 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3436 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3437 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3438 "couldn't parse, error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3439 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3440 g_error_free(error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3441 return; |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3442 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3443 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3444 gchar **ks; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3445 guint n; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3446 ks = g_key_file_get_keys(keyfile, "group", &n, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3447 purple_debug_info("msim", "n=%d\n", n); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3448 guint i; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3449 for (i = 0; ks[i] != NULL; ++i) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3450 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3451 purple_debug_info("msim", "%d=%s\n", i, ks[i]); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3452 } |
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 newest_filever = g_key_file_get_string(keyfile, "group", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3455 "FILEVER", &error); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3456 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3457 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3458 "newest filever: %s\n", newest_filever ? |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3459 newest_filever : "(NULL)"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3460 if (error != NULL) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3461 purple_debug_info("msim_check_newer_version_cb", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3462 "error: %d %d %s\n", |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3463 error->domain, error->code, error->message); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3464 g_error_free(error); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3465 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3466 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3467 g_key_file_free(keyfile); |
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 exit(0); |
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 #endif |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3472 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3473 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3474 Handle a myim:addContact command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3475 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3476 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3477 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3478 { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3479 MsimMessage *body; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3480 gchar *username; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3481 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3482 body = msim_msg_get_dictionary(userinfo, "body"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3483 username = msim_msg_get_string(body, "UserName"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3484 msim_msg_free(body); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3485 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3486 if (!username) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3487 guint uid; |
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 uid = msim_msg_get_integer(userinfo, "UserID"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3490 g_return_if_fail(uid != 0); |
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 username = g_strdup_printf("%d", uid); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3493 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3494 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3495 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3496 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3497 g_free(username); |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3498 } |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3499 |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3500 /* TODO: move uid->username resolving to IM sending and buddy adding functions, |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3501 * so that user can manually add or IM by userid and username automatically |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3502 * looked up if possible? */ |
24731
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 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3505 * Handle a myim:sendIM URI command, after username has been looked up. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3506 */ |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3507 static void |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3508 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3509 { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3510 PurpleConversation *conv; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3511 MsimMessage *body; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3512 gchar *username; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3513 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3514 body = msim_msg_get_dictionary(userinfo, "body"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3515 username = msim_msg_get_string(body, "UserName"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3516 msim_msg_free(body); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3517 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3518 if (!username) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3519 guint uid; |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3520 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3521 uid = msim_msg_get_integer(userinfo, "UserID"); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3522 g_return_if_fail(uid != 0); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3523 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3524 username = g_strdup_printf("%d", uid); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3525 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3526 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3527 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3528 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, session->account); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3529 if (!conv) { |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3530 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3531 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3532 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3533 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3534 /* Just open the window so the user can send an IM. */ |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3535 purple_conversation_present(conv); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3536 |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3537 g_free(username); |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3538 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3539 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3540 static gboolean |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3541 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params) |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3542 { |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3543 PurpleAccount *account; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3544 MsimSession *session; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3545 GList *l; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3546 gchar *uid_str, *cid_str; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3547 guint uid, cid; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3548 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3549 if (g_ascii_strcasecmp(proto, "myim")) |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3550 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3551 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3552 /* Parameters are case-insensitive. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3553 uid_str = g_hash_table_lookup(params, "uid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3554 cid_str = g_hash_table_lookup(params, "cid"); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3555 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3556 uid = uid_str ? atol(uid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3557 cid = cid_str ? atol(cid_str) : 0; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3558 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3559 /* Need a contact. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3560 g_return_val_if_fail(cid != 0, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3561 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3562 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3563 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3564 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3565 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3566 * directly use cid directly from parameters, because it might not be numeric. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3567 * It is trivial to change this to allow cID to be a username, but that's not how |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3568 * the official MySpaceIM client works, so don't provide that functionality. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3569 cid_str = g_strdup_printf("%d", cid); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3570 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3571 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3572 /* Find our account with specified user id, or use first connected account if uid=0. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3573 account = NULL; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3574 l = purple_accounts_get_all(); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3575 while (l) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3576 if (purple_account_is_connected(l->data) && |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3577 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3578 account = l->data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3579 break; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3580 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3581 l = l->next; |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3582 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3583 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3584 if (!account) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3585 purple_notify_error(NULL, _("myim URL handler"), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3586 _("No suitable MySpaceIM account could be found to open this myim URL."), |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3587 _("Enable the proper MySpaceIM account and try again.")); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3588 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3589 return FALSE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3590 } |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3591 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3592 session = (MsimSession *)account->gc->proto_data; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3593 g_return_val_if_fail(session != NULL, FALSE); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3594 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3595 /* Lookup userid to username. TODO: push this down, to IM sending/contact |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3596 * adding functions. */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3597 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3598 /* myim:sendIM?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3599 if (!g_ascii_strcasecmp(cmd, "sendIM")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3600 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3601 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3602 return TRUE; |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3603 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3604 /* myim:addContact?uID=USERID&cID=CONTACTID */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3605 } else if (!g_ascii_strcasecmp(cmd, "addContact")) { |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3606 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3607 g_free(cid_str); |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3608 return TRUE; |
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 |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3611 return FALSE; |
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3612 } |
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3613 |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3614 /** |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3615 * Initialize plugin. |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3616 */ |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3617 static void |
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3618 init_plugin(PurplePlugin *plugin) |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3619 { |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3620 #ifdef MSIM_SELF_TEST |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3621 msim_test_all(); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3622 exit(0); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3623 #endif /* MSIM_SELF_TEST */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3624 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3625 PurpleAccountOption *option; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3626 static gboolean initialized = FALSE; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3627 |
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3628 #ifdef MSIM_CHECK_NEWER_VERSION |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3629 /* PROBLEM: MySpace's servers always return Content-Location, and |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3630 * libpurple redirects to it, infinitely, even though it is the same |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3631 * location we requested! */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3632 purple_util_fetch_url("http://im.myspace.com/nsis/currentversion.txt", |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3633 FALSE, /* not full URL */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3634 "MSIMAutoUpdateAgent", /* user agent */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3635 TRUE, /* use HTTP/1.1 */ |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3636 msim_check_newer_version_cb, NULL); |
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3637 #endif |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3638 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3639 /* TODO: default to automatically try different ports. Make the user be |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3640 * able to set the first port to try (like LastConnectedPort in Windows client). */ |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3641 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3642 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3643 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3644 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3645 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3646 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3647 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3648 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3649 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3650 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3651 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3652 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3653 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3654 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3655 #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
|
3656 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3657 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3658 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3659 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3660 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3661 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3662 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3663 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3664 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3665 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3666 #endif |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3667 |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3668 /* Code below only runs once. Based on oscar.c's oscar_init(). */ |
24731
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24728
diff
changeset
|
3669 if (initialized) |
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3670 return; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3671 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3672 initialized = TRUE; |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3673 |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3674 purple_signal_connect(purple_get_core(), "uri-handler", &initialized, |
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3675 PURPLE_CALLBACK(msim_uri_handler), NULL); |
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3676 } |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3677 |
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3678 PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |