Mercurial > pidgin
annotate libpurple/protocols/myspace/myspace.c @ 31736:462c19eb31d8
Remove duplicate calls to msn_slpmsg_set_slplink. This function is
already called when a slpmsg is created, and calling it again will
place the slpmsg on the slplink list an extra time. If the slpmsg is
freed, then the first entry is removed, but the second remains, and
can cause crashes due to invalid memory accesses.
Fixes #14307.
| author | Elliott Sales de Andrade <qulogic@pidgin.im> |
|---|---|
| date | Thu, 14 Jul 2011 05:54:10 +0000 |
| parents | 79ae7200a11a |
| children | a5b556ac1de5 |
| rev | line source |
|---|---|
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2 * MySpaceIM Protocol Plugin |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
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 |
|
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19661
diff
changeset
|
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
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 |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
39 #include "privacy.h" |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
40 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
41 static void msim_set_status(PurpleAccount *account, PurpleStatus *status); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
42 static void msim_set_idle(PurpleConnection *gc, int time); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
43 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
44 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
45 * Perform actual postprocessing on a message, adding userid as specified. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
46 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
47 * @param msg The message to postprocess. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
48 * @param uid_before Name of field where to insert new field before, or NULL for end. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
49 * @param uid_field_name Name of field to add uid to. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
50 * @param uid The userid to insert. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
51 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
52 * If the field named by uid_field_name already exists, then its string contents will |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
53 * be used for the field, except "<uid>" will be replaced by the userid. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
54 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
55 * If the field named by uid_field_name does not exist, it will be added before the |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
56 * field named by uid_before, as an integer, with the userid. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
57 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
58 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing(). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
59 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
60 static MsimMessage * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
61 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
62 const gchar *uid_field_name, guint uid) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
63 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
64 MsimMessageElement *elem; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
65 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
66 /* First, check - if the field already exists, replace <uid> within it */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
67 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
68 gchar *fmt_string; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
69 gchar *uid_str, *new_str; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
70 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
71 /* Get the packed element, flattening it. This allows <uid> to be |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
72 * replaced within nested data structures, since the replacement is done |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
73 * on the linear, packed data, not on a complicated data structure. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
74 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
75 * For example, if the field was originally a dictionary or a list, you |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
76 * would have to iterate over all the items in it to see what needs to |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
77 * be replaced. But by packing it first, the <uid> marker is easily replaced |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
78 * just by a string replacement. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
79 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
80 fmt_string = msim_msg_pack_element_data(elem); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
81 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
82 uid_str = g_strdup_printf("%d", uid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
83 new_str = purple_strreplace(fmt_string, "<uid>", uid_str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
84 g_free(uid_str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
85 g_free(fmt_string); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
86 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
87 /* Free the old element data */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
88 msim_msg_free_element_data(elem->data); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
89 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
90 /* Replace it with our new data */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
91 elem->data = new_str; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
92 elem->type = MSIM_TYPE_RAW; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
93 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
94 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
95 /* Otherwise, insert new field into outgoing message. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
96 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
97 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
98 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
99 return msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
100 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
101 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
102 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
103 * Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
104 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
105 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
106 * @param userinfo The user information reply message, containing the user ID |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
107 * @param data The message to postprocess and send. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
108 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
109 * The data message should contain these fields: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
110 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
111 * _uid_field_name: string, name of field to add with userid from userinfo message |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
112 * _uid_before: string, name of field before field to insert, or NULL for end |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
113 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
114 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
115 msim_postprocess_outgoing_cb(MsimSession *session, const MsimMessage *userinfo, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
116 gpointer data) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
117 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
118 gchar *uid_field_name, *uid_before, *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
119 guint uid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
120 MsimMessage *msg, *body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
121 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
122 msg = (MsimMessage *)data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
123 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
124 /* Obtain userid from userinfo message. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
125 body = msim_msg_get_dictionary(userinfo, "body"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
126 g_return_if_fail(body != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
127 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
128 uid = msim_msg_get_integer(body, "UserID"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
129 msim_msg_free(body); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
130 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
131 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
132 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
133 if (!uid) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
134 gchar *msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
135 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
136 msg = g_strdup_printf(_("No such user: %s"), username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
137 if (!purple_conv_present_error(username, session->account, msg)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
138 purple_notify_error(NULL, NULL, _("User lookup"), msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
139 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
140 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
141 g_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
142 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
143 /* TODO: free |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
144 * msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
145 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
146 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
147 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
148 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
149 uid_field_name = msim_msg_get_string(msg, "_uid_field_name"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
150 uid_before = msim_msg_get_string(msg, "_uid_before"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
151 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
152 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
153 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
154 /* Send */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
155 if (!msim_msg_send(session, msg)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
156 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
157 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
158 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
159 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
160 /* Free field names AFTER sending message, because MsimMessage does NOT copy |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
161 * field names - instead, treats them as static strings (which they usually are). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
162 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
163 g_free(uid_field_name); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
164 g_free(uid_before); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
165 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
166 /* TODO: free |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
167 * msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
168 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
169 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
170 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
171 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
172 * Postprocess and send a message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
173 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
174 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
175 * @param msg Message to postprocess. Will NOT be freed. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
176 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
177 * @param uid_field_name Name of new field to add, containing uid of username. Static string. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
178 * @param uid_before Name of existing field to insert username field before. Static string. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
179 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
180 * @return TRUE if successful. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
181 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
182 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
183 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
184 const gchar *username, const gchar *uid_field_name, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
185 const gchar *uid_before) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
186 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
187 PurpleBuddy *buddy; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
188 guint uid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
189 gboolean rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
190 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
191 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
192 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
193 /* Store information for msim_postprocess_outgoing_cb(). */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
194 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
195 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
196 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
197 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
198 /* First, try the most obvious. If numeric userid is given, use that directly. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
199 if (msim_is_userid(username)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
200 uid = atol(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
201 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
202 /* Next, see if on buddy list and know uid. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
203 buddy = purple_find_buddy(session->account, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
204 if (buddy) { |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
205 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
206 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
207 uid = 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
208 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
209 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
210 if (!buddy || !uid) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
211 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
212 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
213 username ? username : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
214 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
215 return TRUE; /* not sure of status yet - haven't sent! */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
216 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
217 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
218 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
219 /* Already have uid, postprocess and send msg immediately. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
220 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
221 username ? username : "(NULL)", uid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
222 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
223 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
224 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
225 rc = msim_msg_send(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
226 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
227 /* TODO: free |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
228 * msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
229 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
230 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
231 return rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
232 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
233 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
234 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
235 * Send a buddy message of a given type. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
236 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
237 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
238 * @param who Username to send message to. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
239 * @param text Message text to send. Not freed; will be copied. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
240 * @param type A MSIM_BM_* constant. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
241 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
242 * @return TRUE if success, FALSE if fail. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
243 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
244 * Buddy messages ('bm') include instant messages, action messages, status messages, etc. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
245 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
246 gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
247 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
248 int type) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
249 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
250 gboolean rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
251 MsimMessage *msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
252 const gchar *from_username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
253 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
254 g_return_val_if_fail(who != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
255 g_return_val_if_fail(text != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
256 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
257 from_username = session->account->username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
258 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
259 g_return_val_if_fail(from_username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
260 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
261 purple_debug_info("msim", "sending %d message from %s to %s: %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
262 type, from_username, who, text); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
263 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
264 msg = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
265 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
266 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
267 /* 't' will be inserted here */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
268 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
269 "msg", MSIM_TYPE_STRING, g_strdup(text), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
270 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
271 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
272 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
273 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
274 msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
275 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
276 return rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
277 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
278 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
279 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
280 * Lookup a username by userid, from buddy list. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
281 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
282 * @param wanted_uid |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
283 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
284 * @return Username of wanted_uid, if on blist, or NULL. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
285 * This is a static string, so don't free it. Copy it if needed. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
286 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
287 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
288 static const gchar * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
289 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
290 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
291 GSList *buddies, *cur; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
292 const gchar *ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
293 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
294 buddies = purple_find_buddies(account, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
295 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
296 if (!buddies) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
297 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
298 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
299 return NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
300 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
301 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
302 ret = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
303 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
304 for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
305 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
306 PurpleBuddy *buddy; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
307 guint uid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
308 const gchar *name; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
309 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
310 /* See finch/gnthistory.c */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
311 buddy = cur->data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
312 |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
313 uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID"); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
314 name = purple_buddy_get_name(buddy); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
315 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
316 if (uid == wanted_uid) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
317 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
318 ret = name; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
319 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
320 } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
321 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
322 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
323 g_slist_free(buddies); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
324 return ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
325 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
326 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
327 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
328 * Setup a callback, to be called when a reply is received with the returned rid. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
329 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
330 * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
331 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
332 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
333 * @return The request/reply ID, used to link replies with requests, or -1. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
334 * Put the rid in your request, 'rid' field. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
335 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
336 * TODO: Make more generic and more specific: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
337 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
338 * 2) data - make it an MsimMessage? |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
339 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
340 guint |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
341 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
342 gpointer data) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
343 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
344 guint rid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
345 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
346 rid = session->next_rid++; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
347 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
348 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
349 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
350 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
351 return rid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
352 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
353 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
354 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
355 * Return the icon name for a buddy and account. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
356 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
357 * @param acct The account to find the icon for, or NULL for protocol icon. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
358 * @param buddy The buddy to find the icon for, or NULL for the account icon. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
359 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
360 * @return The base icon name string. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
361 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
362 static const gchar * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
363 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
364 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
365 /* Use a MySpace icon submitted by hbons at |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
366 * http://developer.pidgin.im/wiki/MySpaceIM. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
367 return "myspace"; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
368 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
369 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
370 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
371 * Obtain the status text for a buddy. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
372 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
373 * @param buddy The buddy to obtain status text for. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
374 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
375 * @return Status text, or NULL if error. Caller g_free()'s. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
376 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
377 static char * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
378 msim_status_text(PurpleBuddy *buddy) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
379 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
380 MsimUser *user; |
|
31529
79ae7200a11a
Silence a swath of warnings regarding set-but-unused.
Paul Aurich <paul@darkrain42.org>
parents:
31397
diff
changeset
|
381 const gchar *display_name = NULL, *headline = NULL; |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
382 PurpleAccount *account; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
383 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
384 g_return_val_if_fail(buddy != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
385 |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
386 account = purple_buddy_get_account(buddy); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
387 |
|
31203
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
388 user = msim_get_user_from_buddy(buddy, FALSE); |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
389 if (user != NULL) { |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
390 /* Retrieve display name and/or headline, depending on user preference. */ |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
391 if (purple_account_get_bool(account, "show_headline", TRUE)) { |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
392 headline = user->headline; |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
393 } |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
394 |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
395 if (purple_account_get_bool(account, "show_display_name", FALSE)) { |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
396 display_name = user->display_name; |
|
258fec7797b9
Attempt to fix a crash I've seen a few times. I think it happens if you
Mark Doliner <mark@kingant.net>
parents:
29847
diff
changeset
|
397 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
398 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
399 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
400 /* Return appropriate combination of display name and/or headline, or neither. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
401 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
402 if (display_name && headline) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
403 return g_strconcat(display_name, " ", headline, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
404 } else if (display_name) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
405 return g_strdup(display_name); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
406 } else if (headline) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
407 return g_strdup(headline); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
408 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
409 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
410 return NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
411 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
412 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
413 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
414 * Obtain the tooltip text for a buddy. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
415 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
416 * @param buddy Buddy to obtain tooltip text on. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
417 * @param user_info Variable modified to have the tooltip text. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
418 * @param full TRUE if should obtain full tooltip text. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
419 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
420 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
421 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
422 gboolean full) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
423 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
424 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
425 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
426 g_return_if_fail(buddy != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
427 g_return_if_fail(user_info != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
428 |
|
25237
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
429 user = msim_get_user_from_buddy(buddy, TRUE); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
430 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
431 if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
432 MsimSession *session; |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
433 PurpleAccount *account = purple_buddy_get_account(buddy); |
|
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
434 PurpleConnection *gc = purple_account_get_connection(account); |
|
28977
e137c1fc216a
Check if memory has been freed by looking at its contents does not work
Mark Doliner <mark@kingant.net>
parents:
28975
diff
changeset
|
435 |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
436 session = (MsimSession *)gc->proto_data; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
437 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
438 /* TODO: if (full), do something different? */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
439 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
440 /* TODO: request information? have to figure out how to do |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
441 * the asynchronous lookup like oscar does (tooltip shows |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
442 * 'retrieving...' if not yet available, then changes when it is). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
443 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
444 * Right now, only show what we have on hand. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
445 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
446 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
447 /* Show abbreviated user info. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
448 msim_append_user_info(session, user_info, user, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
449 } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
450 } |
| 22160 | 451 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
452 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
453 * Get possible user status types. Based on mockprpl. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
454 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
455 * @return GList of status types. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
456 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
457 static GList * |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
458 msim_status_types(PurpleAccount *acct) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
459 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
460 GList *types; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
461 PurpleStatusType *status; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
462 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
463 purple_debug_info("myspace", "returning status types\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
464 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
465 types = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
466 |
| 22160 | 467 /* 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
|
468 #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
469 purple_status_type_new_with_attrs( \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
470 prim, /* PurpleStatusPrimitive */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
471 NULL, /* id - use default */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
472 NULL, /* name - use default */ \ |
|
24464
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24406
diff
changeset
|
473 TRUE, /* saveable */ \ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
474 TRUE, /* user_settable */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
475 FALSE, /* not independent */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
476 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
477 /* Attributes - each status can have a message. */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
478 "message", \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
479 _("Message"), \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
480 purple_value_new(PURPLE_TYPE_STRING), \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
481 NULL); \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
482 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
483 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
484 types = g_list_append(types, status) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
485 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
486 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
487 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
488 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
489 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
490 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
491 |
|
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
492 /* Except tune status is different... */ |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
493 status = purple_status_type_new_with_attrs( |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
494 PURPLE_STATUS_TUNE, /* primitive */ |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
495 "tune", /* ID */ |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
496 NULL, /* name - use default */ |
|
24464
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24406
diff
changeset
|
497 FALSE, /* saveable */ |
|
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
498 TRUE, /* should be user_settable some day */ |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
499 TRUE, /* independent */ |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
500 |
|
29682
29df7408df03
Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <paul@darkrain42.org>
parents:
29478
diff
changeset
|
501 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING), |
|
29df7408df03
Eliminate the name collisions on "Title". I have a few qualms:
Paul Aurich <paul@darkrain42.org>
parents:
29478
diff
changeset
|
502 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING), |
|
22266
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
503 NULL); |
|
22264
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
504 |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
505 types = g_list_append(types, status); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
506 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
507 return types; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
508 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
509 |
|
27155
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
510 /* |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
511 * TODO: This define is stolen from oscar.h. |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
512 * It's also in yahoo.h. |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
513 * It should be in libpurple/util.c |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
514 */ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
515 #define msim_put32(buf, data) ( \ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
516 (*((buf)) = (unsigned char)((data)>>24)&0xff), \ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
517 (*((buf)+1) = (unsigned char)((data)>>16)&0xff), \ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
518 (*((buf)+2) = (unsigned char)((data)>>8)&0xff), \ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
519 (*((buf)+3) = (unsigned char)(data)&0xff), \ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
520 4) |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
521 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
522 /** |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
523 * Compute the base64'd login challenge response based on username, password, nonce, and IPs. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
524 * |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
525 * @param nonce The base64 encoded nonce ('nc') field from the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
526 * @param email User's email address (used as login name). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
527 * @param password User's cleartext password. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
528 * @param response_len Will be written with response length. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
529 * |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
530 * @return Binary login challenge response, ready to send to the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
531 * Must be g_free()'d when finished. NULL if error. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
532 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
533 static gchar * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
534 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
535 const gchar *email, const gchar *password, guint *response_len) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
536 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
537 PurpleCipherContext *key_context; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
538 PurpleCipher *sha1; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
539 PurpleCipherContext *rc4; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
540 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
541 guchar hash_pw[HASH_SIZE]; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
542 guchar key[HASH_SIZE]; |
|
24914
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
543 gchar *password_truncated, *password_utf16le, *password_utf8_lc; |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
544 GString *data; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
545 guchar *data_out; |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
546 size_t data_out_len; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
547 gsize conv_bytes_read, conv_bytes_written; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
548 GError *conv_error; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
549 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
550 int i; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
551 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
552 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
553 g_return_val_if_fail(nonce != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
554 g_return_val_if_fail(email != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
555 g_return_val_if_fail(password != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
556 g_return_val_if_fail(response_len != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
557 |
|
24914
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
558 /* |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
559 * Truncate password to 10 characters. Their "change password" |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
560 * web page doesn't let you enter more than 10 characters, but you |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
561 * can enter more than 10 when logging in on myspace.com and they |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
562 * truncate it. |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
563 */ |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
564 password_truncated = g_strndup(password, 10); |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
565 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
566 /* Convert password to lowercase (required for passwords containing |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
567 * uppercase characters). MySpace passwords are lowercase, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
568 * see ticket #2066. */ |
|
24914
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
569 password_utf8_lc = g_utf8_strdown(password_truncated, -1); |
|
1981b04de92e
MySpace? passwords are truncated to 10 characters. Their website doesn't
Mark Doliner <mark@kingant.net>
parents:
24885
diff
changeset
|
570 g_free(password_truncated); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
571 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
572 /* Convert ASCII password to UTF16 little endian */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
573 purple_debug_info("msim", "converting password to UTF-16LE\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
574 conv_error = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
575 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
576 &conv_bytes_read, &conv_bytes_written, &conv_error); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
577 g_free(password_utf8_lc); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
578 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
579 if (conv_error != NULL) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
580 purple_debug_error("msim", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
581 "g_convert password UTF8->UTF16LE failed: %s", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
582 conv_error->message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
583 g_error_free(conv_error); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
584 return NULL; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
585 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
586 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
587 /* Compute password hash */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
588 purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
589 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
590 g_free(password_utf16le); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
591 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
592 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
593 purple_debug_info("msim", "pwhash = "); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
594 for (i = 0; i < sizeof(hash_pw); i++) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
595 purple_debug_info("msim", "%.2x ", hash_pw[i]); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
596 purple_debug_info("msim", "\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
597 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
598 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
599 /* key = sha1(sha1(pw) + nonce2) */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
600 sha1 = purple_ciphers_find_cipher("sha1"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
601 key_context = purple_cipher_context_new(sha1, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
602 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
603 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
604 purple_cipher_context_digest(key_context, sizeof(key), key, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
605 purple_cipher_context_destroy(key_context); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
606 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
607 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
608 purple_debug_info("msim", "key = "); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
609 for (i = 0; i < sizeof(key); i++) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
610 purple_debug_info("msim", "%.2x ", key[i]); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
611 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
612 purple_debug_info("msim", "\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
613 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
614 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
615 rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
616 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
617 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
618 * but only first 0x10 used for the RC4 key. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
619 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
620 purple_cipher_context_set_key(rc4, key); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
621 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
622 /* rc4 encrypt: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
623 * nonce1+email+IP list */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
624 |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
625 data = g_string_new(NULL); |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
626 g_string_append_len(data, nonce, NONCE_SIZE); |
|
27155
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
627 |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
628 /* Include the null terminator */ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
629 g_string_append_len(data, email, strlen(email) + 1); |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
630 |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
631 while (data->len % 4 != 0) |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
632 g_string_append_c(data, 0xfb); |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
633 |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
634 #ifdef SEND_OUR_IP_ADDRESSES |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
635 /* TODO: Obtain IPs of network interfaces instead of using this hardcoded value */ |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
636 g_string_set_size(data, data->len + 4); |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
637 msim_put32(data->str + data->len - 4, MSIM_LOGIN_IP_LIST_LEN); |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
638 g_string_append_len(data, MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN); |
|
27155
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
639 #else |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
640 g_string_set_size(data, data->len + 4); |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
641 msim_put32(data->str + data->len - 4, 0); |
|
8cb0f676c70d
Fix a few problems with our myspace login response:
Mark Doliner <mark@kingant.net>
parents:
27154
diff
changeset
|
642 #endif /* !SEND_OUR_IP_ADDRESSES */ |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
643 |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
644 data_out = g_new0(guchar, data->len); |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
645 |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
646 purple_cipher_context_encrypt(rc4, (const guchar *)data->str, |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
647 data->len, data_out, &data_out_len); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
648 purple_cipher_context_destroy(rc4); |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
649 |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
650 if (data_out_len != data->len) { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
651 purple_debug_info("msim", "msim_compute_login_response: " |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
652 "data length mismatch: %" G_GSIZE_FORMAT " != %" |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
653 G_GSIZE_FORMAT "\n", data_out_len, data->len); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
654 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
655 |
|
24768
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
656 g_string_free(data, TRUE); |
|
3c224208b814
Use a GString here when constructing the data. It's way more
Mark Doliner <mark@kingant.net>
parents:
24767
diff
changeset
|
657 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
658 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
659 purple_debug_info("msim", "response=<%s>\n", data_out); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
660 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
661 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
662 *response_len = data_out_len; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
663 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
664 return (gchar *)data_out; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
665 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
666 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
667 /** |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
668 * Process a login challenge, sending a response. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
669 * |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
670 * @param session |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
671 * @param msg Login challenge message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
672 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
673 * @return TRUE if successful, FALSE if not |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
674 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
675 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
676 msim_login_challenge(MsimSession *session, MsimMessage *msg) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
677 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
678 PurpleAccount *account; |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
679 gchar *response; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
680 guint response_len; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
681 gchar *nc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
682 gsize nc_len; |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
683 gboolean ret; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
684 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
685 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
686 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
687 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
688 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
689 account = session->account; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
690 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
691 g_return_val_if_fail(account != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
692 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
693 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
694 |
|
22486
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
695 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT |
|
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
696 " bytes, decoded\n", nc_len); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
697 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
698 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) { |
|
22486
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
699 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER |
|
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
700 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
| 21358 | 701 purple_connection_error_reason (session->gc, |
| 702 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
703 _("Unexpected challenge length from server")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
704 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
705 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
706 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
707 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
708 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
709 response_len = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
710 response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
711 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
712 g_free(nc); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
713 |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
714 ret = msim_send(session, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
715 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
716 /* This is actually user's email address. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
717 "username", MSIM_TYPE_STRING, g_strdup(account->username), |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
718 /* GString will be freed in msim_msg_free() in msim_send(). */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
719 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
720 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
721 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
722 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
723 "reconn", MSIM_TYPE_INTEGER, 0, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
724 "status", MSIM_TYPE_INTEGER, 100, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
725 "id", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
726 NULL); |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
727 |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
728 g_free(response); |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
729 |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
730 return ret; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
731 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
732 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
733 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
734 * Process unrecognized information. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
735 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
736 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
737 * @param msg An MsimMessage that was unrecognized, or NULL. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
738 * @param note Information on what was unrecognized, or NULL. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
739 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
740 void |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
741 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
742 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
743 /* TODO: Some more context, outwardly equivalent to a backtrace, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
744 * for helping figure out what this msg is for. What was going on? |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
745 * But not too much information so that a user |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
746 * posting this dump reveals confidential information. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
747 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
748 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
749 /* TODO: dump unknown msgs to file, so user can send them to me |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
750 * if they wish, to help add support for new messages (inspired |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
751 * by Alexandr Shutko, who maintains OSCAR protocol documentation). |
| 22156 | 752 * |
| 753 * Filed enhancement ticket for libpurple as #4688. | |
| 754 */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
755 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
756 purple_debug_info("msim", "Unrecognized data on account for %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
757 (session && session->account && session->account->username) ? |
|
19353
af0e77c44667
MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19352
diff
changeset
|
758 session->account->username : "(NULL)"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
759 if (note) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
760 purple_debug_info("msim", "(Note: %s)\n", note); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
761 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
762 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
763 if (msg) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
764 msim_msg_dump("Unrecognized message dump: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
765 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
766 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
767 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
768 /** Called when the session key arrives to check whether the user |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
769 * has a username, and set one if desired. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
770 static gboolean |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
771 msim_is_username_set(MsimSession *session, MsimMessage *msg) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
772 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
773 g_return_val_if_fail(msg != NULL, FALSE); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
774 g_return_val_if_fail(session->gc != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
775 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
776 session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
777 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
778 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
779 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
780 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
781 /* Comes with: proof,profileid,userid,uniquenick -- all same values |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
782 * some of the time, but can vary. This is our own user ID. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
783 session->userid = msim_msg_get_integer(msg, "userid"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
784 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
785 /* Save uid to account so this account can be looked up by uid. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
786 purple_account_set_int(session->account, "uid", session->userid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
787 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
788 /* Not sure what profileid is used for. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
789 if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
790 msim_unrecognized(session, msg, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
791 "Profile ID didn't match user ID, don't know why"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
792 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
793 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
794 /* We now know are our own username, only after we're logged in.. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
795 * which is weird, but happens because you login with your email |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
796 * address and not username. Will be freed in msim_session_destroy(). */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
797 session->username = msim_msg_get_string(msg, "uniquenick"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
798 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
799 /* If user lacks a username, help them get one. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
800 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
801 purple_debug_info("msim_is_username_set", "no username is set\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
802 purple_request_yes_no(session->gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
803 _("MySpaceIM - No Username Set"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
804 _("You appear to have no MySpace username."), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
805 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
806 0, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
807 session->account, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
808 NULL, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
809 NULL, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
810 session->gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
811 G_CALLBACK(msim_set_username_cb), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
812 G_CALLBACK(msim_do_not_set_username_cb)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
813 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
814 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
815 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
816 return TRUE; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
817 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
818 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
819 #ifdef MSIM_USE_KEEPALIVE |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
820 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
821 * Check if the connection is still alive, based on last communication. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
822 */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
823 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
824 msim_check_alive(gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
825 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
826 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
827 time_t delta; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
828 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
829 session = (MsimSession *)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 delta = time(NULL) - session->last_comm; |
|
24682
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
832 |
| 22156 | 833 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
834 if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
|
24682
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
835 purple_debug_info("msim", |
|
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
836 "msim_check_alive: %zu > interval of %d, presumed dead\n", |
|
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
837 delta, MSIM_KEEPALIVE_INTERVAL); |
| 22156 | 838 purple_connection_error_reason(session->gc, |
|
24682
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
839 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
8f757b2139d2
String changes (a few of which I had already made, grumble grumble).
Mark Doliner <mark@kingant.net>
parents:
24464
diff
changeset
|
840 _("Lost connection with server")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
841 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
842 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
843 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
844 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
845 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
846 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
847 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
848 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
849 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
850 * Handle mail reply checks. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
851 */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
852 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
853 msim_check_inbox_cb(MsimSession *session, const MsimMessage *reply, gpointer data) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
854 { |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
855 MsimMessage *body; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
856 guint i, n; |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
857 /* Information for each new inbox message type. */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
858 static struct |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
859 { |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
860 const gchar *key; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
861 guint bit; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
862 const gchar *url; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
863 const gchar *text; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
864 } message_types[] = { |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
865 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL }, |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
866 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL }, |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
867 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }, |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
868 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL }, |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
869 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
870 }; |
|
25606
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
871 const gchar *froms[G_N_ELEMENTS(message_types) + 1] = { "" }, |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
872 *tos[G_N_ELEMENTS(message_types) + 1] = { "" }, |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
873 *urls[G_N_ELEMENTS(message_types) + 1] = { "" }, |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
874 *subjects[G_N_ELEMENTS(message_types) + 1] = { "" }; |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
875 |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
876 g_return_if_fail(reply != NULL); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
877 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
878 /* Can't write _()'d strings in array initializers. Workaround. */ |
|
25606
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
879 /* khc: then use N_() in the array initializer and use _() when they are |
|
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
880 used */ |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
881 message_types[0].text = _("New mail messages"); |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
882 message_types[1].text = _("New blog comments"); |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
883 message_types[2].text = _("New profile comments"); |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
884 message_types[3].text = _("New friend requests!"); |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
885 message_types[4].text = _("New picture comments"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
886 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
887 body = msim_msg_get_dictionary(reply, "body"); |
|
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
888 |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
889 if (body == NULL) |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
890 return; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
891 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
892 n = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
893 |
|
25606
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25576
diff
changeset
|
894 for (i = 0; i < G_N_ELEMENTS(message_types); ++i) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
895 const gchar *key; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
896 guint bit; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
897 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
898 key = message_types[i].key; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
899 bit = message_types[i].bit; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
900 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
901 if (msim_msg_get(body, key)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
902 /* Notify only on when _changes_ from no mail -> has mail |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
903 * (edge triggered) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
904 if (!(session->inbox_status & bit)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
905 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
906 key ? key : "(NULL)", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
907 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
908 subjects[n] = message_types[i].text; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
909 froms[n] = _("MySpace"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
910 tos[n] = session->username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
911 /* TODO: append token, web challenge, so automatically logs in. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
912 * Would also need to free strings because they won't be static |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
913 */ |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
914 urls[n] = message_types[i].url; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
915 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
916 ++n; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
917 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
918 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
919 "msim_check_inbox_cb: already notified of %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
920 key ? key : "(NULL)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
921 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
922 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
923 session->inbox_status |= bit; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
924 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
925 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
926 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
927 if (n) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
928 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
929 "msim_check_inbox_cb: notifying of %d\n", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
930 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
931 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
932 purple_notify_emails(session->gc, /* handle */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
933 n, /* count */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
934 TRUE, /* detailed */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
935 subjects, froms, tos, urls, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
936 NULL, /* PurpleNotifyCloseCallback cb */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
937 NULL); /* gpointer user_data */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
938 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
939 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
940 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
941 msim_msg_free(body); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
942 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
943 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
944 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
945 * Send request to check if there is new mail. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
946 */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
947 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
948 msim_check_inbox(gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
949 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
950 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
951 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
952 session = (MsimSession *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
953 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
954 purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
955 g_return_val_if_fail(msim_send(session, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
956 "persist", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
957 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
958 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
959 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
960 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
961 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
962 "rid", MSIM_TYPE_INTEGER, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
963 msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
964 "body", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
965 NULL), TRUE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
966 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
967 /* Always return true, so that we keep checking for mail. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
968 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
969 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
970 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
971 /** |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
972 * Add contact from server to buddy list, after looking up username. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
973 * Callback from msim_add_contact_from_server(). |
|
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
974 * |
|
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
975 * @param data An MsimMessage * of the contact information. Will be freed. |
|
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
976 */ |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
977 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
978 msim_add_contact_from_server_cb(MsimSession *session, const MsimMessage *user_lookup_info, gpointer data) |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
979 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
980 MsimMessage *contact_info, *user_lookup_info_body; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
981 PurpleGroup *group; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
982 PurpleBuddy *buddy; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
983 MsimUser *user; |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
984 gchar *username, *group_name, *display_name; |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
985 guint uid, visibility; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
986 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
987 contact_info = (MsimMessage *)data; |
|
22486
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
988 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
989 uid = msim_msg_get_integer(contact_info, "ContactID"); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
990 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
991 if (!user_lookup_info) { |
| 22159 | 992 username = g_strdup(msim_uid2username_from_blist(session->account, uid)); |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
993 display_name = NULL; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
994 g_return_if_fail(username != NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
995 } else { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
996 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body"); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
997 username = msim_msg_get_string(user_lookup_info_body, "UserName"); |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
998 display_name = msim_msg_get_string(user_lookup_info_body, "DisplayName"); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
999 msim_msg_free(user_lookup_info_body); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1000 g_return_if_fail(username != NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1001 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1002 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1003 purple_debug_info("msim_add_contact_from_server_cb", |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1004 "*** about to add/update username=%s\n", username); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1005 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1006 /* 1. Creates a new group, or gets existing group if it exists (or so |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1007 * the documentation claims). */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1008 group_name = msim_msg_get_string(contact_info, "GroupName"); |
|
22983
882af25a8edf
Fix handling of empty groups in MySpace. Fixes #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22980
diff
changeset
|
1009 if (!group_name || (*group_name == '\0')) { |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1010 g_free(group_name); |
|
22980
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1011 group_name = g_strdup(_("IM Friends")); |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1012 purple_debug_info("myspace", "No GroupName specified, defaulting to '%s'.\n", group_name); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1013 } |
|
22980
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1014 group = purple_find_group(group_name); |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1015 if (!group) { |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1016 group = purple_group_new(group_name); |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1017 /* Add group to beginning. See #2752. */ |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1018 purple_blist_add_group(group, NULL); |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1019 } |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
1020 g_free(group_name); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1021 |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1022 visibility = msim_msg_get_integer(contact_info, "Visibility"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1023 if (visibility == 2) { |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1024 /* This buddy is blocked (and therefore not on our buddy list */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1025 purple_privacy_deny_add(session->account, username, TRUE); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1026 msim_msg_free(contact_info); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1027 g_free(username); |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1028 g_free(display_name); |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1029 return; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1030 } |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
1031 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1032 /* 2. Get or create buddy */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1033 buddy = purple_find_buddy(session->account, username); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1034 if (!buddy) { |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1035 purple_debug_info("msim_add_contact_from_server_cb", |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1036 "creating new buddy: %s\n", username); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1037 buddy = purple_buddy_new(session->account, username, NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1038 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1039 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1040 /* TODO: use 'Position' in contact_info to take into account where buddy is */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1041 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1042 |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1043 if (strtol(username, NULL, 10) == uid) { |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1044 /* |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1045 * This user has not set their username! Set their server |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1046 * alias to their display name so that we don't see a bunch |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1047 * of numbers in the buddy list. |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1048 */ |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1049 if (display_name != NULL) { |
|
25887
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1050 purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name); |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1051 serv_got_alias(session->gc, username, display_name); |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1052 } else { |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1053 serv_got_alias(session->gc, username, |
|
25887
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1054 purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName")); |
|
24796
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1055 } |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1056 } |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1057 g_free(display_name); |
|
c2054d8d23fc
Set the server alias for myspace buddies who haven't set their username.
Mark Doliner <mark@kingant.net>
parents:
24785
diff
changeset
|
1058 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1059 /* 3. Update buddy information */ |
|
25237
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1060 user = msim_get_user_from_buddy(buddy, TRUE); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1061 |
|
24684
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24683
diff
changeset
|
1062 user->id = uid; |
|
128a77f3b3c4
Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents:
24683
diff
changeset
|
1063 /* Keep track of the user ID across sessions */ |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1064 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1065 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1066 /* Stores a few fields in the MsimUser, relevant to the buddy itself. |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1067 * AvatarURL, Headline, ContactID. */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1068 msim_store_user_info(session, contact_info, NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1069 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1070 /* TODO: other fields, store in 'user' */ |
|
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1071 msim_msg_free(contact_info); |
|
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1072 |
|
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1073 g_free(username); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1074 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1075 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1076 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1077 * Add first ContactID in contact_info to buddy's list. Used to add |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1078 * server-side buddies to client-side list. |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1079 * |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1080 * @return TRUE if added. |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1081 */ |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1082 static gboolean |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1083 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info) |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1084 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1085 guint uid; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1086 const gchar *username; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1087 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1088 uid = msim_msg_get_integer(contact_info, "ContactID"); |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1089 g_return_val_if_fail(uid != 0, FALSE); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1090 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1091 /* Lookup the username, since NickName and IMName is unreliable */ |
| 22159 | 1092 username = msim_uid2username_from_blist(session->account, uid); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1093 if (!username) { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1094 gchar *uid_str; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1095 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1096 uid_str = g_strdup_printf("%d", uid); |
|
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1097 purple_debug_info("msim_add_contact_from_server", |
|
22486
3225c99785b8
Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <mark@kingant.net>
parents:
22478
diff
changeset
|
1098 "contact_info addr=%p\n", contact_info); |
|
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1099 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info)); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1100 g_free(uid_str); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1101 } else { |
|
19256
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
1102 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info)); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1103 } |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1104 |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1105 /* Say that the contact was added, even if we're still looking up |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1106 * their username. */ |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1107 return TRUE; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1108 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1109 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1110 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1111 * Called when contact list is received from server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1112 */ |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1113 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
1114 msim_got_contact_list(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1115 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1116 MsimMessage *body, *body_node; |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1117 gchar *msg; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1118 guint buddy_count; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1119 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1120 body = msim_msg_get_dictionary(reply, "body"); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1121 |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1122 buddy_count = 0; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1123 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1124 for (body_node = body; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1125 body_node != NULL; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1126 body_node = msim_msg_get_next_element_node(body_node)) |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1127 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1128 MsimMessageElement *elem; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1129 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1130 elem = (MsimMessageElement *)body_node->data; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1131 |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
1132 if (g_str_equal(elem->name, "ContactID")) |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1133 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1134 /* Will look for first contact in body_node */ |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1135 if (msim_add_contact_from_server(session, body_node)) { |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1136 ++buddy_count; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1137 } |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1138 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1139 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1140 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1141 switch (GPOINTER_TO_UINT(user_data)) { |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1142 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS: |
|
23332
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1143 msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)", |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1144 "%d buddies were added or updated from the server (including buddies already on the server-side list)", |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1145 buddy_count), |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1146 buddy_count); |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1147 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1148 g_free(msg); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1149 break; |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1150 |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1151 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS: |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1152 /* TODO */ |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1153 break; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1154 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1155 case MSIM_CONTACT_LIST_INITIAL_FRIENDS: |
|
25419
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24923
diff
changeset
|
1156 /* The session is now set up, ready to be connected. This emits the |
|
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24923
diff
changeset
|
1157 * signedOn signal, so clients can now do anything with msimprpl, and |
|
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24923
diff
changeset
|
1158 * we're ready for it (session key, userid, username all setup). */ |
|
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24923
diff
changeset
|
1159 purple_connection_update_progress(session->gc, _("Connected"), 3, 4); |
|
4278d13b5471
Wait to set the account online until after we've fetched our buddy list.
Mark Doliner <mark@kingant.net>
parents:
24923
diff
changeset
|
1160 purple_connection_set_state(session->gc, PURPLE_CONNECTED); |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1161 break; |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1162 } |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
1163 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1164 msim_msg_free(body); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1165 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1166 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1167 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1168 * Get contact list, calling msim_got_contact_list() with |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1169 * what_to_do_after as user_data gpointer. |
| 24771 | 1170 * |
| 1171 * @param what_to_do_after should be one of the MSIM_CONTACT_LIST_* #defines. | |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1172 */ |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1173 static gboolean |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1174 msim_get_contact_list(MsimSession *session, int what_to_do_after) |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1175 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1176 return msim_send(session, |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1177 "persist", MSIM_TYPE_INTEGER, 1, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1178 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1179 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1180 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1181 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1182 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1183 "rid", MSIM_TYPE_INTEGER, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1184 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)), |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1185 "body", MSIM_TYPE_STRING, g_strdup(""), |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1186 NULL); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1187 } |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1188 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1189 /** Called after username is set, if necessary and we're open for business. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1190 gboolean msim_we_are_logged_on(MsimSession *session) |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1191 { |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1192 MsimMessage *body; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1193 |
|
24770
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24768
diff
changeset
|
1194 /* Set display name to username (otherwise will show email address) */ |
|
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24768
diff
changeset
|
1195 purple_connection_set_display_name(session->gc, session->username); |
|
512c7c31eb21
Set the display name before marking the connection as "connected."
Mark Doliner <mark@kingant.net>
parents:
24768
diff
changeset
|
1196 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1197 body = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1198 "UserID", MSIM_TYPE_INTEGER, session->userid, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1199 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1200 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1201 /* Request IM info about ourself. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1202 msim_send(session, |
|
24779
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24778
diff
changeset
|
1203 "persist", MSIM_TYPE_INTEGER, 1, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1204 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
24780
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24779
diff
changeset
|
1205 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1206 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1207 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1208 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
24780
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24779
diff
changeset
|
1209 "UserID", MSIM_TYPE_INTEGER, session->userid, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1210 "body", MSIM_TYPE_DICTIONARY, body, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1211 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1212 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1213 /* Request MySpace info about ourself. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1214 msim_send(session, |
|
24779
e5f8d9ba84db
I'm not sure why these were strings. The official client uses integers
Mark Doliner <mark@kingant.net>
parents:
24778
diff
changeset
|
1215 "persist", MSIM_TYPE_INTEGER, 1, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1216 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
24780
d7fad2c0cf7c
Some other changes to make this more like the official client, and
Mark Doliner <mark@kingant.net>
parents:
24779
diff
changeset
|
1217 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1218 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1219 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1220 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1221 "body", MSIM_TYPE_STRING, g_strdup(""), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1222 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1223 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1224 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1225 /* TODO: set blocklist */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1226 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1227 /* Notify servers of our current status. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1228 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1229 msim_set_status(session->account, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1230 purple_account_get_active_status(session->account)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1231 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1232 /* TODO: setinfo */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1233 /* |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1234 body = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1235 "TotalFriends", MSIM_TYPE_INTEGER, 666, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1236 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1237 msim_send(session, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1238 "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1239 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1240 "info", MSIM_TYPE_DICTIONARY, body, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1241 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1242 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1243 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1244 /* Disable due to problems with timeouts. TODO: fix. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1245 #ifdef MSIM_USE_KEEPALIVE |
|
25576
7f552614ec8a
applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents:
25538
diff
changeset
|
1246 purple_timeout_add_seconds(MSIM_KEEPALIVE_INTERVAL_CHECK, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1247 (GSourceFunc)msim_check_alive, session); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1248 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1249 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1250 /* Check mail if they want to. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1251 if (purple_account_get_check_mail(session->account)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1252 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1253 (GSourceFunc)msim_check_inbox, session); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1254 msim_check_inbox(session); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1255 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1256 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1257 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1258 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1259 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1260 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1261 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1262 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1263 * Record the client version in the buddy list, from an incoming message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1264 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1265 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1266 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1267 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1268 gchar *username, *cv; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1269 gboolean ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1270 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1271 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1272 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1273 cv = msim_msg_get_string(msg, "cv"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1274 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1275 g_return_val_if_fail(username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1276 if (!cv) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1277 /* No client version to record, don't worry about it. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1278 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1279 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1280 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1281 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1282 user = msim_find_user(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1283 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1284 if (user) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1285 user->client_cv = atol(cv); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1286 ret = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1287 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1288 ret = FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1289 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1290 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1291 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1292 g_free(cv); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1293 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1294 return ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1295 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1296 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1297 #ifdef MSIM_SEND_CLIENT_VERSION |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1298 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1299 * Send our client version to another unofficial client that understands it. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1300 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1301 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1302 msim_send_unofficial_client(MsimSession *session, gchar *username) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1303 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1304 gchar *our_info; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1305 gboolean ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1306 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1307 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1308 PURPLE_MAJOR_VERSION, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1309 PURPLE_MINOR_VERSION, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1310 PURPLE_MICRO_VERSION, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1311 MSIM_PRPL_VERSION_STRING); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1312 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1313 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1314 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1315 return ret; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1316 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1317 #endif |
|
27904
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1318 /** |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1319 * Process incoming status mood messages. |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1320 * |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1321 * @param session |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1322 * @param msg Status mood update message. Caller frees. |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1323 * |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1324 * @return TRUE if successful. |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1325 */ |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1326 static gboolean |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1327 msim_incoming_status_mood(MsimSession *session, MsimMessage *msg) { |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1328 /* TODO: I dont know too much about this yet, |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1329 * so until I see how the official client handles |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1330 * this and decide if libpurple should as well, |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1331 * well just say we used it |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1332 */ |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1333 gchar *ss; |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1334 ss = msim_msg_get_string(msg, "msg"); |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1335 purple_debug_info("msim", "Incoming Status Message: %s", ss ? ss : "(NULL)"); |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1336 g_free(ss); |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1337 return TRUE; |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1338 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1339 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1340 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1341 * Process incoming status messages. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1342 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1343 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1344 * @param msg Status update message. Caller frees. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1345 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1346 * @return TRUE if successful. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1347 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1348 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1349 msim_incoming_status(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1350 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1351 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1352 GList *list; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1353 gchar *status_headline, *status_headline_escaped; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1354 gint status_code, purple_status_code; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1355 gchar *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1356 gchar *unrecognized_msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1357 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1358 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1359 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1360 /* Helpfully looked up by msim_incoming_resolve() for us. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1361 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1362 g_return_val_if_fail(username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1363 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1364 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1365 gchar *ss; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1366 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1367 ss = msim_msg_get_string(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1368 purple_debug_info("msim", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1369 "msim_status: updating status for <%s> to <%s>\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1370 username, ss ? ss : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1371 g_free(ss); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1372 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1373 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1374 /* Example fields: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1375 * |s|0|ss|Offline |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1376 * |s|1|ss|:-)|ls||ip|0|p|0 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1377 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1378 list = msim_msg_get_list(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1379 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1380 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1381 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1382 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1383 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1384 /* Add buddy if not found. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1385 * TODO: Could this be responsible for #3444? */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1386 user = msim_find_user(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1387 if (!user) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1388 PurpleBuddy *buddy; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1389 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1390 purple_debug_info("msim", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1391 "msim_status: making new buddy for %s\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1392 buddy = purple_buddy_new(session->account, username, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1393 purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1394 |
|
25237
401f548e3544
propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1395 user = msim_get_user_from_buddy(buddy, TRUE); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1396 user->id = msim_msg_get_integer(msg, "f"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1397 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1398 /* Keep track of the user ID across sessions */ |
|
25883
e22bc87b758b
explicit merge of '9a5e549612efd8ca6f60fc57b51a4eee7e32c861'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
1399 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1400 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1401 msim_store_user_info(session, msg, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1402 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1403 purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1404 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1405 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1406 if (status_headline && strcmp(status_headline, "") != 0) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1407 /* The status headline is plaintext, but libpurple treats it as HTML, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1408 * so escape any HTML characters to their entity equivalents. */ |
| 24805 | 1409 status_headline_escaped = g_markup_escape_text(status_headline, -1); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1410 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1411 status_headline_escaped = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1412 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1413 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1414 g_free(status_headline); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1415 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1416 /* don't copy; let the MsimUser own the headline, memory-wise */ |
| 24805 | 1417 g_free(user->headline); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1418 user->headline = status_headline_escaped; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1419 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1420 /* Set user status */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1421 switch (status_code) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1422 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1423 purple_status_code = PURPLE_STATUS_OFFLINE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1424 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1425 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1426 case MSIM_STATUS_CODE_ONLINE: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1427 purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1428 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1429 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1430 case MSIM_STATUS_CODE_AWAY: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1431 purple_status_code = PURPLE_STATUS_AWAY; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1432 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1433 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1434 case MSIM_STATUS_CODE_IDLE: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1435 /* Treat idle as an available status. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1436 purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1437 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1438 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1439 default: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1440 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1441 username, status_code); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1442 purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1443 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1444 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1445 status_code); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1446 msim_unrecognized(session, NULL, unrecognized_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1447 g_free(unrecognized_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1448 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1449 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1450 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1451 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1452 if (status_code == MSIM_STATUS_CODE_IDLE) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1453 purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
|
24798
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24796
diff
changeset
|
1454 purple_prpl_got_user_idle(session->account, username, TRUE, 0); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1455 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1456 /* All other statuses indicate going back to non-idle. */ |
|
24798
a8643ca8d2e0
Set buddies idle time to 0 when their idle. 0 is a flag to the UI that
Mark Doliner <mark@kingant.net>
parents:
24796
diff
changeset
|
1457 purple_prpl_got_user_idle(session->account, username, FALSE, 0); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1458 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1459 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1460 #ifdef MSIM_SEND_CLIENT_VERSION |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1461 if (status_code == MSIM_STATUS_CODE_ONLINE) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1462 /* Secretly whisper to unofficial clients our own version as they come online */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1463 msim_send_unofficial_client(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1464 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1465 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1466 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1467 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1468 /* Get information when they come online. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1469 * TODO: periodically refresh? |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1470 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1471 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1472 msim_lookup_user(session, username, NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1473 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1474 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1475 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1476 msim_msg_list_free(list); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1477 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1478 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1479 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1480 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1481 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1482 * Handle an incoming instant message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1483 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1484 * @param session The session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1485 * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1486 * Should also contain username in _username from preprocessing. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1487 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1488 * @return TRUE if successful. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1489 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1490 static gboolean |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1491 msim_incoming_im(MsimSession *session, MsimMessage *msg, const gchar *username) |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1492 { |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1493 gchar *msg_msim_markup, *msg_purple_markup; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1494 gchar *userid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1495 time_t time_received; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1496 PurpleConversation *conv; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1497 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1498 /* I know this isn't really a string... but we need it to be one for |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1499 * purple_find_conversation_with_account(). */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1500 userid = msim_msg_get_string(msg, "f"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1501 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1502 purple_debug_info("msim_incoming_im", "UserID is %s", userid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1503 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1504 if (msim_is_userid(username)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1505 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1506 username, purple_account_get_username(session->account)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1507 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1508 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1509 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1510 /* See if a conversation with their UID already exists...*/ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1511 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1512 if (conv) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1513 /* Since the conversation exists... We need to normalize it */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1514 purple_conversation_set_name(conv, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1515 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1516 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1517 msg_msim_markup = msim_msg_get_string(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1518 g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1519 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1520 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1521 g_free(msg_msim_markup); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1522 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1523 time_received = msim_msg_get_integer(msg, "date"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1524 if (!time_received) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1525 purple_debug_info("msim_incoming_im", "date in message not set.\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1526 time_received = time(NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1527 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1528 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1529 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1530 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1531 g_free(msg_purple_markup); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1532 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1533 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1534 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1535 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1536 /** |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1537 * Handle an incoming action message or an IM. |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1538 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1539 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1540 * @param msg |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1541 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1542 * @return TRUE if successful. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1543 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1544 static gboolean |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1545 msim_incoming_action_or_im(MsimSession *session, MsimMessage *msg) |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1546 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1547 gchar *msg_text, *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1548 gboolean rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1549 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1550 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1551 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1552 msg_text = msim_msg_get_string(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1553 g_return_val_if_fail(msg_text != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1554 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1555 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1556 g_return_val_if_fail(username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1557 |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1558 purple_debug_info("msim", |
|
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1559 "msim_incoming_action_or_im: action <%s> from <%s>\n", |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1560 msg_text, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1561 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1562 if (g_str_equal(msg_text, "%typing%")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1563 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1564 rc = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1565 } else if (g_str_equal(msg_text, "%stoptyping%")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1566 serv_got_typing_stopped(session->gc, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1567 rc = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1568 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1569 rc = msim_incoming_zap(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1570 } else if (strstr(msg_text, "!!!GroupCount=")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1571 /* TODO: support group chats. I think the number in msg_text has |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1572 * something to do with the 'gid' field. */ |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1573 purple_debug_info("msim", |
|
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1574 "msim_incoming_action_or_im: " |
|
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1575 "TODO: implement #4691, group chats: %s\n", msg_text); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1576 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1577 rc = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1578 } else if (strstr(msg_text, "!!!Offline=")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1579 /* TODO: support group chats. This one might mean a user |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1580 * went offline or exited the chat. */ |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1581 purple_debug_info("msim", "msim_incoming_action_or_im: " |
|
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1582 "TODO: implement #4691, group chats: %s\n", msg_text); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1583 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1584 rc = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1585 } else if (msim_msg_get_integer(msg, "aid") != 0) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1586 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1587 msim_msg_get_integer(msg, "aid"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1588 msim_msg_get_integer(msg, "f"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1589 msg_text); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1590 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1591 rc = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1592 } else { |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1593 rc = msim_incoming_im(session, msg, username); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1594 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1595 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1596 g_free(msg_text); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1597 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1598 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1599 return rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1600 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1601 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1602 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1603 * Process an incoming media (message background?) message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1604 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1605 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1606 msim_incoming_media(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1607 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1608 gchar *username, *text; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1609 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1610 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1611 text = msim_msg_get_string(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1612 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1613 g_return_val_if_fail(username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1614 g_return_val_if_fail(text != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1615 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1616 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1617 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1618 /* Media messages are sent when the user opens a window to someone. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1619 * Tell libpurple they started typing and stopped typing, to inform the Psychic |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1620 * Mode plugin so it too can open a window to the user. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1621 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1622 serv_got_typing_stopped(session->gc, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1623 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1624 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1625 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1626 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1627 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1628 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1629 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1630 * Process an incoming "unofficial client" message. The plugin for |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1631 * Miranda IM sends this message with the plugin information. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1632 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1633 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1634 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1635 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1636 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1637 gchar *username, *client_info; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1638 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1639 username = msim_msg_get_string(msg, "_username"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1640 client_info = msim_msg_get_string(msg, "msg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1641 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1642 g_return_val_if_fail(username != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1643 g_return_val_if_fail(client_info != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1644 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1645 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1646 username, client_info); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1647 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1648 user = msim_find_user(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1649 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1650 g_return_val_if_fail(user != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1651 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1652 if (user->client_info) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1653 g_free(user->client_info); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1654 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1655 user->client_info = client_info; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1656 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1657 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1658 /* Do not free client_info - the MsimUser now owns it. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1659 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1660 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1661 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1662 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1663 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1664 * Handle an incoming buddy message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1665 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1666 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1667 msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1668 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1669 guint bm; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1670 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1671 bm = msim_msg_get_integer(msg, "bm"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1672 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1673 msim_incoming_bm_record_cv(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1674 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1675 switch (bm) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1676 case MSIM_BM_STATUS: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1677 return msim_incoming_status(session, msg); |
|
27154
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27137
diff
changeset
|
1678 case MSIM_BM_ACTION_OR_IM_DELAYABLE: |
|
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27137
diff
changeset
|
1679 case MSIM_BM_ACTION_OR_IM_INSTANT: |
|
27027
fdc0035bea5a
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <mark@kingant.net>
parents:
27018
diff
changeset
|
1680 return msim_incoming_action_or_im(session, msg); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1681 case MSIM_BM_MEDIA: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1682 return msim_incoming_media(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1683 case MSIM_BM_UNOFFICIAL_CLIENT: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1684 return msim_incoming_unofficial_client(session, msg); |
|
27904
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1685 case MSIM_BM_STATUS_MOOD: |
|
e4b0bf56667f
Explicitly add a stub for the status mood myspace messages. Closes #9887.
Paul Aurich <paul@darkrain42.org>
parents:
27888
diff
changeset
|
1686 return msim_incoming_status_mood(session, msg); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1687 default: |
|
27888
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1688 /* |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1689 * Unknown message type! We used to call |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1690 * msim_incoming_action_or_im(session, msg); |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1691 * for these, but that doesn't help anything, and it means |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1692 * we'll show broken gibberish if MySpace starts sending us |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1693 * other message types. |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1694 */ |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1695 purple_debug_warning("myspace", "Received unknown imcoming " |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1696 "message, bm=%u\n", bm); |
|
b59aa0c36b2b
Ignore unknown MySpace messages instead of trying to treat them like
Mark Doliner <mark@kingant.net>
parents:
27381
diff
changeset
|
1697 return TRUE; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1698 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1699 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1700 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1701 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1702 * Process the initial server information from the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1703 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1704 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1705 msim_process_server_info(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1706 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1707 MsimMessage *body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1708 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1709 body = msim_msg_get_dictionary(msg, "body"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1710 g_return_val_if_fail(body != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1711 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1712 /* Example body: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1713 AdUnitRefreshInterval=10. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1714 AlertPollInterval=360. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1715 AllowChatRoomEmoticonSharing=False. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1716 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1717 CurClientVersion=673. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1718 EnableIMBrowse=True. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1719 EnableIMStuffAvatars=False. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1720 EnableIMStuffZaps=False. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1721 MaxAddAllFriends=100. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1722 MaxContacts=1000. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1723 MinClientVersion=594. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1724 MySpaceIM_ENGLISH=78744676. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1725 MySpaceNowTimer=720. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1726 PersistenceDataTimeout=900. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1727 UseWebChallenge=1. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1728 WebTicketGoHome=False |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1729 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1730 Anything useful? TODO: use what is useful, and use it. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1731 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1732 purple_debug_info("msim_process_server_info", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1733 "maximum contacts: %d\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1734 msim_msg_get_integer(body, "MaxContacts")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1735 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1736 session->server_info = body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1737 /* session->server_info freed in msim_session_destroy */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1738 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1739 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1740 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1741 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1742 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1743 * Process a web challenge, used to login to the web site. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1744 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1745 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1746 msim_web_challenge(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1747 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1748 /* TODO: web challenge, store token. #2659. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1749 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1750 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1751 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1752 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1753 * Process a persistance message reply from the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1754 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1755 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1756 * @param msg Message reply from server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1757 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1758 * @return TRUE if successful. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1759 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1760 * msim_lookup_user sets callback for here |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1761 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1762 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1763 msim_process_reply(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1764 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1765 MSIM_USER_LOOKUP_CB cb; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1766 gpointer data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1767 guint rid, cmd, dsn, lid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1768 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1769 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1770 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1771 msim_store_user_info(session, msg, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1772 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1773 rid = msim_msg_get_integer(msg, "rid"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1774 cmd = msim_msg_get_integer(msg, "cmd"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1775 dsn = msim_msg_get_integer(msg, "dsn"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1776 lid = msim_msg_get_integer(msg, "lid"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1777 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1778 /* Unsolicited messages */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1779 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1780 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1781 return msim_process_server_info(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1782 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1783 return msim_web_challenge(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1784 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1785 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1786 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1787 /* If a callback is registered for this userid lookup, call it. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1788 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1789 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1790 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1791 if (cb) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1792 purple_debug_info("msim", "msim_process_reply: calling callback now\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1793 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */ |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
1794 cb(session, msg, data); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1795 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1796 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1797 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1798 purple_debug_info("msim", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1799 "msim_process_reply: no callback for rid %d\n", rid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1800 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1801 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1802 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1803 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1804 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1805 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1806 * Handle an error from the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1807 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1808 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1809 * @param msg The message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1810 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1811 * @return TRUE if successfully reported error. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1812 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1813 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1814 msim_error(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1815 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1816 gchar *errmsg, *full_errmsg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1817 guint err; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1818 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1819 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1820 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1821 err = msim_msg_get_integer(msg, "err"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1822 errmsg = msim_msg_get_string(msg, "errmsg"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1823 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1824 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1825 errmsg ? errmsg : "no 'errmsg' given"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1826 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1827 g_free(errmsg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1828 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1829 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1830 session->sesskey, full_errmsg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1831 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1832 /* Destroy session if fatal. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1833 if (msim_msg_get(msg, "fatal")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1834 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1835 purple_debug_info("msim", "fatal error, closing\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1836 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1837 switch (err) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1838 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1839 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1840 if (!purple_account_get_remember_password(session->account)) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1841 purple_account_set_password(session->account, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1842 #ifdef MSIM_MAX_PASSWORD_LENGTH |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1843 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1844 gchar *suggestion; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1845 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1846 suggestion = g_strdup_printf(_("%s Your password is " |
|
27127
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27027
diff
changeset
|
1847 "%zu characters, which is longer than the " |
|
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27027
diff
changeset
|
1848 "maximum length of %d. Please shorten your " |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1849 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."), |
|
27127
c4f0e47c7bed
Try to make this string a little more human, and flow better in its
Mark Doliner <mark@kingant.net>
parents:
27027
diff
changeset
|
1850 full_errmsg, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1851 strlen(session->account->password), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1852 MSIM_MAX_PASSWORD_LENGTH); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1853 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1854 /* Replace full_errmsg. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1855 g_free(full_errmsg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1856 full_errmsg = suggestion; |
|
27128
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27127
diff
changeset
|
1857 } else { |
|
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27127
diff
changeset
|
1858 g_free(full_errmsg); |
|
0a8129263401
Show a friendlier error message on myspace when your username or password
Mark Doliner <mark@kingant.net>
parents:
27127
diff
changeset
|
1859 full_errmsg = g_strdup(_("Incorrect username or password")); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1860 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1861 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1862 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1863 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1864 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1865 if (!purple_account_get_remember_password(session->account)) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1866 purple_account_set_password(session->account, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1867 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1868 } |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
1869 purple_connection_error_reason(session->gc, reason, full_errmsg); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1870 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1871 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1872 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1873 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1874 g_free(full_errmsg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1875 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1876 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1877 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1878 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1879 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1880 * Process a message. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1881 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1882 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1883 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1884 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1885 * @return TRUE if successful. FALSE if processing failed. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1886 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1887 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1888 msim_process(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1889 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1890 g_return_val_if_fail(session != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1891 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1892 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1893 if (msim_msg_get_integer(msg, "lc") == 1) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1894 return msim_login_challenge(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1895 } else if (msim_msg_get_integer(msg, "lc") == 2) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1896 /* return msim_we_are_logged_on(session, msg); */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1897 if (msim_is_username_set(session, msg)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1898 return msim_we_are_logged_on(session); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1899 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1900 /* No username is set... We'll wait for the callbacks to do their work */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1901 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1902 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1903 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1904 } else if (msim_msg_get(msg, "bm")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1905 return msim_incoming_bm(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1906 } else if (msim_msg_get(msg, "rid")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1907 return msim_process_reply(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1908 } else if (msim_msg_get(msg, "error")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1909 return msim_error(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1910 } else if (msim_msg_get(msg, "ka")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1911 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1912 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1913 msim_unrecognized(session, msg, "in msim_process"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1914 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1915 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1916 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1917 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1918 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1919 * After a uid is resolved to username, tag it with the username and submit for processing. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1920 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1921 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1922 * @param userinfo Response messsage to resolving request. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1923 * @param data MsimMessage *, the message to attach information to. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1924 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1925 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
1926 msim_incoming_resolved(MsimSession *session, const MsimMessage *userinfo, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1927 gpointer data) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1928 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1929 gchar *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1930 MsimMessage *msg, *body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1931 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1932 g_return_if_fail(userinfo != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1933 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1934 body = msim_msg_get_dictionary(userinfo, "body"); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1935 g_return_if_fail(body != NULL); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1936 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1937 username = msim_msg_get_string(body, "UserName"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1938 g_return_if_fail(username != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1939 /* Note: username will be owned by 'msg' below. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1940 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1941 msg = (MsimMessage *)data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1942 g_return_if_fail(msg != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1943 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1944 /* TODO: more elegant solution than below. attach whole message? */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1945 /* Special elements name beginning with '_', we'll use internally within the |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1946 * program (did not come directly from the wire). */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1947 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1948 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1949 /* TODO: attach more useful information, like ImageURL */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1950 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1951 msim_process(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1952 |
|
24885
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24805
diff
changeset
|
1953 msim_msg_free(msg); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
1954 msim_msg_free(body); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1955 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1956 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1957 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1958 * Preprocess incoming messages, resolving as needed, calling |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1959 * msim_process() when ready to process. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1960 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1961 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1962 * @param msg MsimMessage *, freed by caller. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1963 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1964 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1965 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1966 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1967 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1968 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1969 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1970 guint uid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1971 const gchar *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1972 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1973 /* 'f' = userid message is from, in buddy messages */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1974 uid = msim_msg_get_integer(msg, "f"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1975 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1976 username = msim_uid2username_from_blist(session->account, uid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1977 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1978 if (username) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1979 /* Know username already, use it. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1980 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1981 username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1982 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1983 return msim_process(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1984 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1985 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1986 gchar *from; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1987 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1988 /* Send lookup request. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1989 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1990 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1991 from = msim_msg_get_string(msg, "f"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1992 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1993 g_free(from); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1994 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1995 /* indeterminate */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1996 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1997 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1998 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
1999 /* Nothing to resolve - send directly to processing. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2000 return msim_process(session, msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2001 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2002 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2003 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2004 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2005 * Callback when input available. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2006 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2007 * @param gc_uncasted A PurpleConnection pointer. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2008 * @param source File descriptor. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2009 * @param cond PURPLE_INPUT_READ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2010 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2011 * Reads the input, and calls msim_preprocess_incoming() to handle it. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2012 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2013 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2014 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2015 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2016 PurpleConnection *gc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2017 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2018 gchar *end; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2019 int n; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2020 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2021 g_return_if_fail(gc_uncasted != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2022 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2023 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2024 gc = (PurpleConnection *)(gc_uncasted); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2025 session = gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2026 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2027 /* libpurple/eventloop.h only defines these two */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2028 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2029 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2030 purple_connection_error_reason (gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2031 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2032 _("Invalid input condition")); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2033 return; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2034 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2035 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2036 g_return_if_fail(cond == PURPLE_INPUT_READ); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2037 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2038 /* Mark down that we got data, so we don't timeout. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2039 session->last_comm = time(NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2040 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2041 /* If approaching end of buffer, reallocate some more memory. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2042 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2043 purple_debug_info("msim", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2044 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2045 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2046 session->rxsize += MSIM_READ_BUF_SIZE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2047 session->rxbuf = g_realloc(session->rxbuf, session->rxsize); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2048 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2049 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2050 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2051 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2052 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2053 session->rxoff, session->rxsize, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2054 MSIM_READ_BUF_SIZE - session->rxoff - 1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2055 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2056 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2057 * the file descriptor, but it sometimes differs from the 'source' parameter. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2058 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2059 n = recv(session->fd, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2060 session->rxbuf + session->rxoff, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2061 session->rxsize - session->rxoff - 1, 0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2062 |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2063 if (n < 0) { |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2064 gchar *tmp; |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2065 |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2066 if (errno == EAGAIN) |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2067 /* No worries */ |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2068 return; |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2069 |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2070 tmp = g_strdup_printf(_("Lost connection with server: %s"), |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2071 g_strerror(errno)); |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2072 purple_connection_error_reason(gc, |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2073 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2074 g_free(tmp); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2075 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2076 } else if (n == 0) { |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2077 purple_connection_error_reason(gc, |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2078 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2079 _("Server closed the connection")); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2080 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2081 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2082 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2083 /* Null terminate */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2084 purple_debug_info("msim", "msim_input_cb: going to null terminate " |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2085 "at n=%d\n", n); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2086 session->rxbuf[session->rxoff + n] = 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2087 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2088 #ifdef MSIM_CHECK_EMBEDDED_NULLS |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2089 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2090 if (strlen(session->rxbuf + session->rxoff) != n) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2091 /* Occurs after login, but it is not a null byte. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2092 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2093 "--null byte encountered?\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2094 strlen(session->rxbuf + session->rxoff), n); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2095 /*purple_connection_error_reason (gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2096 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2097 "Invalid message - null byte on input"); */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2098 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2099 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2100 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2101 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2102 session->rxoff += n; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2103 purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2104 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2105 #ifdef MSIM_DEBUG_RXBUF |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2106 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2107 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2108 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2109 /* Look for \\final\\ end markers. If found, process message. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2110 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2111 MsimMessage *msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2112 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2113 #ifdef MSIM_DEBUG_RXBUF |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2114 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2115 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2116 *end = 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2117 msg = msim_parse(session->rxbuf); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2118 if (!msg) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2119 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2120 purple_connection_error_reason (gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2121 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2122 _("Unable to parse message")); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2123 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2124 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2125 /* Process message and then free it (processing function should |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2126 * clone message if it wants to keep it afterwards.) */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2127 if (!msim_preprocess_incoming(session, msg)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2128 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2129 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2130 msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2131 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2132 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2133 /* Move remaining part of buffer to beginning. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2134 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2135 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2136 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2137 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2138 /* Clear end of buffer |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2139 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2140 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2141 } |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2142 } |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2143 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2144 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2145 * Callback when connected. Sets up input handlers. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2146 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2147 * @param data A PurpleConnection pointer. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2148 * @param source File descriptor. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2149 * @param error_message |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2150 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2151 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2152 msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2153 { |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2154 PurpleConnection *gc; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2155 MsimSession *session; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2156 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2157 g_return_if_fail(data != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2158 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2159 gc = (PurpleConnection *)data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2160 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2161 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2162 if (source < 0) { |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2163 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"), |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2164 error_message); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2165 purple_connection_error_reason (gc, |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2166 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2167 g_free(tmp); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2168 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2169 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2170 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2171 session->fd = source; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2172 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2173 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2174 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2175 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2176 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2177 * Start logging in to the MSIM servers. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2178 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2179 * @param acct Account information to use to login. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2180 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2181 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2182 msim_login(PurpleAccount *acct) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2183 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2184 PurpleConnection *gc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2185 const gchar *host; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2186 int port; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2187 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2188 g_return_if_fail(acct != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2189 g_return_if_fail(acct->username != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2190 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2191 purple_debug_info("msim", "logging in %s\n", acct->username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2192 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2193 gc = purple_account_get_connection(acct); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2194 gc->proto_data = msim_session_new(acct); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2195 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2196 |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2197 /* |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2198 * Lets wipe out our local list of blocked buddies. We'll get a |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2199 * list of all blocked buddies from the server, and we shouldn't |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2200 * have stuff in the local list that isn't on the server list. |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2201 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2202 while (acct->deny != NULL) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2203 purple_privacy_deny_remove(acct, acct->deny->data, TRUE); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2204 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2205 /* 1. connect to server */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2206 purple_connection_update_progress(gc, _("Connecting"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2207 0, /* which connection step this is */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2208 4); /* total number of steps */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2209 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2210 host = purple_account_get_string(acct, "server", MSIM_SERVER); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2211 port = purple_account_get_int(acct, "port", MSIM_PORT); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2212 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2213 /* From purple.sf.net/api: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2214 * """Note that this function name can be misleading--although it is called |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2215 * "proxy connect," it is used for establishing any outgoing TCP connection, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2216 * whether through a proxy or not.""" */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2217 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2218 /* Calls msim_connect_cb when connected. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2219 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2220 /* TODO: try other ports if in auto mode, then save |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2221 * working port and try that first next time. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2222 purple_connection_error_reason (gc, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2223 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27380
diff
changeset
|
2224 _("Unable to connect")); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2225 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2226 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2227 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2228 |
|
28975
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2229 static void |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2230 msim_buddy_free(PurpleBuddy *buddy) |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2231 { |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2232 msim_user_free(purple_buddy_get_protocol_data(buddy)); |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2233 purple_buddy_set_protocol_data(buddy, NULL); |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2234 } |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2235 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2236 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2237 * Close the connection. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2238 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2239 * @param gc The connection. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2240 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2241 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2242 msim_close(PurpleConnection *gc) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2243 { |
|
28975
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2244 GSList *buddies; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2245 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2246 |
|
28979
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
28977
diff
changeset
|
2247 if (gc == NULL) { |
|
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
28977
diff
changeset
|
2248 return; |
|
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
28977
diff
changeset
|
2249 } |
|
3e99c4eab63b
Oh, we need to make sure the buddy is on our protocol before trying to
Mark Doliner <mark@kingant.net>
parents:
28977
diff
changeset
|
2250 |
|
28975
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2251 /* |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2252 * Free our protocol-specific buddy data. It almost seems like libpurple |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2253 * should call our buddy_free prpl callback so that we don't need to do |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2254 * this... but it doesn't, so we do. |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2255 */ |
|
28980
1386a0e22ac7
Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents:
28979
diff
changeset
|
2256 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL); |
|
28975
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2257 while (buddies != NULL) { |
|
28980
1386a0e22ac7
Paul Aurich helped me make this cleaner, because he's such a good person!
Mark Doliner <mark@kingant.net>
parents:
28979
diff
changeset
|
2258 msim_buddy_free(buddies->data); |
|
28975
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2259 buddies = g_slist_delete_link(buddies, buddies); |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2260 } |
|
52fffd4cdd62
Make sure we free myspace buddy proto_data when we disconnect. I believe
Mark Doliner <mark@kingant.net>
parents:
28889
diff
changeset
|
2261 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2262 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2263 if (session == NULL) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2264 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2265 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2266 gc->proto_data = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2267 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2268 if (session->gc->inpa) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2269 purple_input_remove(session->gc->inpa); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2270 } |
|
24802
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24798
diff
changeset
|
2271 if (session->fd >= 0) { |
|
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24798
diff
changeset
|
2272 close(session->fd); |
|
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24798
diff
changeset
|
2273 session->fd = -1; |
|
075d700fdc75
Let's actually close the socket when we sign off a myspace account.
Mark Doliner <mark@kingant.net>
parents:
24798
diff
changeset
|
2274 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2275 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2276 msim_session_destroy(session); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2277 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2278 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2279 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2280 * Schedule an IM to be sent once the user ID is looked up. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2281 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2282 * @param gc Connection. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2283 * @param who A user id, email, or username to send the message to. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2284 * @param message Instant message text to send. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2285 * @param flags Flags. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2286 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2287 * @return 1 if successful or postponed, -1 if failed |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2288 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2289 * Allows sending to a user by username, email address, or userid. If |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2290 * a username or email address is given, the userid must be looked up. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2291 * This function does that by calling msim_postprocess_outgoing(). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2292 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2293 static int |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2294 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2295 PurpleMessageFlags flags) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2296 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2297 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2298 gchar *message_msim; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2299 int rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2300 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2301 g_return_val_if_fail(gc != NULL, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2302 g_return_val_if_fail(who != NULL, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2303 g_return_val_if_fail(message != NULL, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2304 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2305 /* 'flags' has many options, not used here. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2306 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2307 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2308 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2309 message_msim = html_to_msim_markup(session, message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2310 |
|
27154
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27137
diff
changeset
|
2311 if (msim_send_bm(session, who, message_msim, MSIM_BM_ACTION_OR_IM_DELAYABLE)) { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2312 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2313 * return 1 even if the message could not be sent, since I don't know if |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2314 * it has failed yet--because the IM is only sent after the userid is |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2315 * retrieved from the server (which happens after this function returns). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2316 * If an error does occur, it should be logged to the IM window. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2317 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2318 rc = 1; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2319 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2320 rc = -1; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2321 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2322 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2323 g_free(message_msim); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2324 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2325 return rc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2326 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2327 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2328 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2329 * Handle when our user starts or stops typing to another user. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2330 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2331 * @param gc |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2332 * @param name The buddy name to which our user is typing to |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2333 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2334 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2335 * @return 0 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2336 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2337 static unsigned int |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2338 msim_send_typing(PurpleConnection *gc, const gchar *name, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2339 PurpleTypingState state) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2340 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2341 const gchar *typing_str; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2342 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2343 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2344 g_return_val_if_fail(gc != NULL, 0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2345 g_return_val_if_fail(name != NULL, 0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2346 |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2347 session = (MsimSession *)gc->proto_data; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2348 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2349 switch (state) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2350 case PURPLE_TYPING: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2351 typing_str = "%typing%"; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2352 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2353 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2354 case PURPLE_TYPED: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2355 case PURPLE_NOT_TYPING: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2356 default: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2357 typing_str = "%stoptyping%"; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2358 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2359 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2360 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2361 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str); |
|
27154
5fbcfcbd6551
Rename MSIM_BM_INSTANT_ACTION_OR_IM to MSIM_BM_ACTION_OR_IM_INSTANT
Mark Doliner <mark@kingant.net>
parents:
27137
diff
changeset
|
2362 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION_OR_IM_INSTANT); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2363 return 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2364 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2365 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2366 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2367 * Callback for msim_get_info(), for when user info is received. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2368 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2369 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
2370 msim_get_info_cb(MsimSession *session, const MsimMessage *user_info_msg, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2371 gpointer data) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2372 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2373 MsimMessage *msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2374 gchar *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2375 PurpleNotifyUserInfo *user_info; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2376 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2377 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2378 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2379 orthogonality. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2380 msg = (MsimMessage *)data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2381 g_return_if_fail(msg != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2382 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2383 username = msim_msg_get_string(msg, "user"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2384 if (!username) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2385 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2386 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2387 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2388 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2389 msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2390 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2391 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2392 user = msim_find_user(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2393 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2394 if (!user) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2395 /* User isn't on blist, create a temporary user to store info. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2396 user = g_new0(MsimUser, 1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2397 user->temporary_user = TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2398 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2399 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2400 /* Update user structure with new information */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2401 msim_store_user_info(session, user_info_msg, user); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2402 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2403 user_info = purple_notify_user_info_new(); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2404 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2405 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2406 msim_append_user_info(session, user_info, user, TRUE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2407 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2408 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2409 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2410 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2411 purple_notify_user_info_destroy(user_info); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2412 |
|
28889
5a367a023195
Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents:
27904
diff
changeset
|
2413 if (user->temporary_user) |
|
5a367a023195
Call msim_user_free here to make sure we cancel url_data and free one or
Mark Doliner <mark@kingant.net>
parents:
27904
diff
changeset
|
2414 msim_user_free(user); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2415 g_free(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2416 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2417 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2418 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2419 * Retrieve a user's profile. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2420 * @param username Username, user ID, or email address to lookup. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2421 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2422 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2423 msim_get_info(PurpleConnection *gc, const gchar *username) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2424 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2425 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2426 MsimUser *user; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2427 gchar *user_to_lookup; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2428 MsimMessage *user_msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2429 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2430 g_return_if_fail(gc != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2431 g_return_if_fail(username != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2432 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2433 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2434 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2435 /* Obtain uid of buddy. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2436 user = msim_find_user(session, username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2437 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2438 /* If is on buddy list, lookup by uid since it is faster. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2439 if (user && user->id) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2440 user_to_lookup = g_strdup_printf("%d", user->id); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2441 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2442 /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2443 user_to_lookup = g_strdup(username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2444 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2445 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2446 /* Pass the username to msim_get_info_cb(), because since we lookup |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2447 * by userid, the userinfo message will only contain the uid (not |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2448 * the username) but it would be useful to display the username too. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2449 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2450 user_msg = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2451 "user", MSIM_TYPE_STRING, g_strdup(username), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2452 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2453 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2454 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2455 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2456 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2457 g_free(user_to_lookup); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2458 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2459 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2460 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2461 * Set status using an MSIM_STATUS_CODE_* value. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2462 * @param status_code An MSIM_STATUS_CODE_* value. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2463 * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2464 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2465 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2466 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2467 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2468 g_return_if_fail(statstring != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2469 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2470 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2471 status_code, statstring); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2472 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2473 if (!msim_send(session, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2474 "status", MSIM_TYPE_INTEGER, status_code, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2475 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2476 "statstring", MSIM_TYPE_STRING, statstring, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2477 "locstring", MSIM_TYPE_STRING, g_strdup(""), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2478 NULL)) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2479 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2480 purple_debug_info("msim", "msim_set_status: failed to set status\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2481 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2482 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2483 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2484 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2485 * Set your status - callback for when user manually sets it. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2486 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2487 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2488 msim_set_status(PurpleAccount *account, PurpleStatus *status) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2489 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2490 PurpleStatusType *type; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2491 PurplePresence *pres; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2492 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2493 guint status_code; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2494 const gchar *message; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2495 gchar *stripped; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2496 gchar *unrecognized_msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2497 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2498 session = (MsimSession *)account->gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2499 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2500 type = purple_status_get_type(status); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2501 pres = purple_status_get_presence(status); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2502 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2503 switch (purple_status_type_get_primitive(type)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2504 case PURPLE_STATUS_AVAILABLE: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2505 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2506 MSIM_STATUS_CODE_ONLINE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2507 status_code = MSIM_STATUS_CODE_ONLINE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2508 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2509 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2510 case PURPLE_STATUS_INVISIBLE: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2511 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2512 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2513 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2514 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2515 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2516 case PURPLE_STATUS_AWAY: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2517 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2518 MSIM_STATUS_CODE_AWAY); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2519 status_code = MSIM_STATUS_CODE_AWAY; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2520 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2521 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2522 default: |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2523 purple_debug_info("msim", "msim_set_status: unknown " |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2524 "status interpreting as online"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2525 status_code = MSIM_STATUS_CODE_ONLINE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2526 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2527 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2528 purple_status_type_get_primitive(type)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2529 msim_unrecognized(session, NULL, unrecognized_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2530 g_free(unrecognized_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2531 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2532 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2533 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2534 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2535 message = purple_status_get_attr_string(status, "message"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2536 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2537 /* Status strings are plain text. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2538 if (message != NULL) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2539 stripped = purple_markup_strip_html(message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2540 else |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2541 stripped = g_strdup(""); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2542 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2543 msim_set_status_code(session, status_code, stripped); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2544 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2545 /* If we should be idle, set that status. Time is irrelevant here. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2546 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2547 msim_set_idle(account->gc, 1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2548 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2549 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2550 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2551 * Go idle. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2552 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2553 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2554 msim_set_idle(PurpleConnection *gc, int time) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2555 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2556 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2557 PurpleStatus *status; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2558 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2559 g_return_if_fail(gc != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2560 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2561 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2562 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2563 status = purple_account_get_active_status(session->account); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2564 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2565 if (time == 0) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2566 /* Going back from idle. In msim, idle is mutually exclusive |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2567 * from the other states (you can only be away or idle, but not |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2568 * both, for example), so by going non-idle I go back to what |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2569 * libpurple says I should be. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2570 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2571 msim_set_status(session->account, status); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2572 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2573 const gchar *message; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2574 gchar *stripped; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2575 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2576 /* Set the idle message to the status message from the real |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2577 * current status. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2578 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2579 message = purple_status_get_attr_string(status, "message"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2580 if (message != NULL) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2581 stripped = purple_markup_strip_html(message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2582 else |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2583 stripped = g_strdup(""); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2584 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2585 /* msim doesn't support idle time, so just go idle */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2586 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2587 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2588 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2589 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2590 /** |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2591 * @return TRUE if everything was ok, FALSE if something went awry. |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2592 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2593 static gboolean |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2594 msim_update_blocklist_for_buddy(MsimSession *session, const char *name, gboolean allow, gboolean block) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2595 { |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2596 MsimMessage *msg; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2597 GList *list; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2598 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2599 list = NULL; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2600 list = g_list_prepend(list, allow ? "a+" : "a-"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2601 list = g_list_prepend(list, "<uid>"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2602 list = g_list_prepend(list, block ? "b+" : "b-"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2603 list = g_list_prepend(list, "<uid>"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2604 list = g_list_reverse(list); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2605 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2606 msg = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2607 "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2608 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2609 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2610 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2611 "idlist", MSIM_TYPE_LIST, list, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2612 NULL); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2613 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2614 if (!msim_postprocess_outgoing(session, msg, name, "idlist", NULL)) { |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2615 purple_debug_error("myspace", |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2616 "blocklist command failed for %s, allow=%d, block=%d\n", |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2617 name, allow, block); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2618 msim_msg_free(msg); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2619 return FALSE; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2620 } |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2621 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2622 msim_msg_free(msg); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2623 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2624 return TRUE; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2625 } |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2626 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2627 /** |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2628 * Add a buddy to user's buddy list. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2629 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2630 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2631 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2632 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2633 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2634 MsimMessage *msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2635 MsimMessage *msg_persist; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2636 MsimMessage *body; |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2637 const char *name, *gname; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2638 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2639 session = (MsimSession *)gc->proto_data; |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2640 name = purple_buddy_get_name(buddy); |
|
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2641 gname = group ? purple_group_get_name(group) : NULL; |
|
25172
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24464
diff
changeset
|
2642 |
|
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24464
diff
changeset
|
2643 if (msim_get_user_from_buddy(buddy, FALSE) != NULL) |
|
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24464
diff
changeset
|
2644 return; |
|
125cac3e24ee
The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents:
24464
diff
changeset
|
2645 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2646 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2647 name, gname ? gname : "(no group)"); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2648 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2649 msg = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2650 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2651 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2652 /* "newprofileid" will be inserted here with uid. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2653 "reason", MSIM_TYPE_STRING, g_strdup(""), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2654 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2655 |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2656 if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2657 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2658 msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2659 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2660 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2661 msim_msg_free(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2662 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2663 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2664 * buddy list since Purple adds it locally. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2665 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2666 body = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2667 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2668 "GroupName", MSIM_TYPE_STRING, g_strdup(gname), |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2669 "Position", MSIM_TYPE_INTEGER, 1000, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2670 "Visibility", MSIM_TYPE_INTEGER, 1, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2671 "NickName", MSIM_TYPE_STRING, g_strdup(""), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2672 "NameSelect", MSIM_TYPE_INTEGER, 0, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2673 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2674 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2675 /* TODO: Update blocklist. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2676 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2677 msg_persist = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2678 "persist", MSIM_TYPE_INTEGER, 1, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2679 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2680 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2681 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2682 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2683 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2684 /* TODO: Use msim_new_reply_callback to get rid. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2685 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2686 "body", MSIM_TYPE_DICTIONARY, body, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2687 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2688 |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2689 if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL)) |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2690 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2691 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2692 msim_msg_free(msg_persist); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2693 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2694 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2695 msim_msg_free(msg_persist); |
|
24783
75ecd41a64ba
Fix a bug where if "Show our presence only to people on our buddy list"
Mark Doliner <mark@kingant.net>
parents:
24782
diff
changeset
|
2696 |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2697 /* Add to allow list, remove from block list */ |
|
25887
47540809ae91
explicit merge of '82e4edbe06cb0ef0fa59f70db44a289bb91e1343'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2698 msim_update_blocklist_for_buddy(session, name, TRUE, FALSE); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2699 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2700 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2701 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2702 * Remove a buddy from the user's buddy list. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2703 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2704 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2705 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2706 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2707 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2708 MsimMessage *delbuddy_msg; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2709 MsimMessage *persist_msg; |
|
25886
a4a17fe80160
explicit merge of 'f7807039eeef499a403d638cbcb94060a1d33eea'
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2710 const char *name; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2711 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2712 session = (MsimSession *)gc->proto_data; |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2713 name = purple_buddy_get_name(buddy); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2714 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2715 delbuddy_msg = msim_msg_new( |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2716 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2717 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2718 /* 'delprofileid' with uid will be inserted here. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2719 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2720 |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2721 if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2722 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2723 msim_msg_free(delbuddy_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2724 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2725 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2726 msim_msg_free(delbuddy_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2727 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2728 persist_msg = msim_msg_new( |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2729 "persist", MSIM_TYPE_INTEGER, 1, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2730 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2731 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2732 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2733 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2734 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2735 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2736 /* <uid> will be replaced by postprocessing */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2737 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2738 NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2739 |
|
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23332
diff
changeset
|
2740 if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2741 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2742 msim_msg_free(persist_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2743 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2744 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2745 msim_msg_free(persist_msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2746 |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2747 /* |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2748 * Remove from our approve list and from our block list (this |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2749 * doesn't seem like it would be necessary, but the official client |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2750 * does it) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2751 */ |
| 25892 | 2752 if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) { |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2753 purple_notify_error(NULL, NULL, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2754 _("Failed to remove buddy"), _("blocklist command failed")); |
|
24885
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24805
diff
changeset
|
2755 return; |
|
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24805
diff
changeset
|
2756 } |
|
25891
c0b42d6c2785
propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710)
Richard Laager <rlaager@wiktel.com>
diff
changeset
|
2757 msim_buddy_free(buddy); |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2758 } |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2759 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2760 /** |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2761 * Remove a buddy from the user's buddy list and add them to the block list. |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2762 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2763 static void |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2764 msim_add_deny(PurpleConnection *gc, const char *name) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2765 { |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2766 MsimSession *session; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2767 MsimMessage *msg, *body; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2768 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2769 session = (MsimSession *)gc->proto_data; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2770 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2771 /* Remove from buddy list */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2772 msg = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2773 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2774 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2775 /* 'delprofileid' with uid will be inserted here. */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2776 NULL); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2777 if (!msim_postprocess_outgoing(session, msg, name, "delprofileid", NULL)) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2778 purple_debug_error("myspace", "delbuddy command failed\n"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2779 msim_msg_free(msg); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2780 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2781 /* Remove from our approve list and add to our block list */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2782 msim_update_blocklist_for_buddy(session, name, FALSE, TRUE); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2783 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2784 /* |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2785 * Add the buddy to our list of blocked contacts, so we know they |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2786 * are blocked if we log in with another client |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2787 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2788 body = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2789 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2790 "Visibility", MSIM_TYPE_INTEGER, 2, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2791 NULL); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2792 msg = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2793 "persist", MSIM_TYPE_INTEGER, 1, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2794 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2795 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2796 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2797 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2798 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2799 "body", MSIM_TYPE_DICTIONARY, body, |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2800 NULL); |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2801 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2802 purple_debug_error("myspace", "add to block list command failed\n"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2803 msim_msg_free(msg); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2804 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2805 /* |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2806 * TODO: MySpace doesn't allow blocked buddies on our buddy list, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2807 * do they? If not then we need to remove the buddy from |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2808 * libpurple's buddy list. |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2809 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2810 } |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2811 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2812 /** |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2813 * Remove a buddy from the user's block list. |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2814 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2815 static void |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2816 msim_rem_deny(PurpleConnection *gc, const char *name) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2817 { |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2818 MsimSession *session; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2819 MsimMessage *msg, *body; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2820 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2821 session = (MsimSession *)gc->proto_data; |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2822 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2823 /* |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2824 * Remove from our list of blocked contacts, so we know they |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2825 * are no longer blocked if we log in with another client |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2826 */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2827 body = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2828 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2829 NULL); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2830 msg = msim_msg_new( |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2831 "persist", MSIM_TYPE_INTEGER, 1, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2832 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2833 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2834 "dsn", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_DSN, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2835 "lid", MSIM_TYPE_INTEGER, MC_DELETE_CONTACT_INFO_LID, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2836 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2837 "body", MSIM_TYPE_DICTIONARY, body, |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2838 NULL); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2839 if (!msim_postprocess_outgoing(session, msg, name, "body", NULL)) |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2840 purple_debug_error("myspace", "remove from block list command failed\n"); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2841 msim_msg_free(msg); |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2842 |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2843 /* Remove from our approve list and our block list */ |
|
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
2844 msim_update_blocklist_for_buddy(session, name, FALSE, FALSE); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2845 } |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
2846 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2847 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2848 * Returns a string of a username in canonical form. Basically removes all the |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2849 * spaces, lowercases the string, and looks up user IDs to usernames. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2850 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2851 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2852 * Borrowed this code from oscar_normalize. Added checking for |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2853 * "if userid, get name before normalizing" |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2854 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2855 static const char *msim_normalize(const PurpleAccount *account, const char *str) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2856 static char normalized[BUF_LEN]; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2857 char *tmp1, *tmp2; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2858 int i, j; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2859 guint id; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2860 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2861 g_return_val_if_fail(str != NULL, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2862 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2863 if (msim_is_userid(str)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2864 /* Have user ID, we need to get their username first :) */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2865 const char *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2866 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2867 /* If the account does not exist, we can't look up the user. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2868 if (!account || !account->gc) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2869 return str; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2870 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2871 id = atol(str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2872 username = msim_uid2username_from_blist((PurpleAccount *)account, id); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2873 if (!username) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2874 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2875 /* Note: manual lookup using msim_lookup_user() is a problem inside |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2876 * msim_normalize(), because msim_lookup_user() calls a callback function |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2877 * when the user information has been looked up, but msim_normalize() expects |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2878 * the result immediately. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2879 strncpy(normalized, str, BUF_LEN); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2880 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2881 strncpy(normalized, username, BUF_LEN); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2882 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2883 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2884 /* Have username. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2885 strncpy(normalized, str, BUF_LEN); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2886 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2887 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2888 /* Strip spaces. */ |
|
24922
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24885
diff
changeset
|
2889 for (i=0, j=0; normalized[j]; j++) { |
|
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24885
diff
changeset
|
2890 if (normalized[j] != ' ') |
|
cead8692e35f
Terminate the loop on the first null-character.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24885
diff
changeset
|
2891 normalized[i++] = normalized[j]; |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2892 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2893 normalized[i] = '\0'; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2894 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2895 /* Lowercase and perform UTF-8 normalization. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2896 tmp1 = g_utf8_strdown(normalized, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2897 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2898 g_snprintf(normalized, sizeof(normalized), "%s", tmp2); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2899 g_free(tmp2); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2900 g_free(tmp1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2901 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2902 /* TODO: re-add caps and spacing back to what the user wanted. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2903 * User can format their own names, for example 'msimprpl' is shown |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2904 * as 'MsIm PrPl' in the official client. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2905 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2906 * TODO: file a ticket to add this enhancement. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2907 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2908 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2909 return normalized; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2910 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2911 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2912 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2913 * Return whether the buddy can be messaged while offline. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2914 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2915 * The protocol supports offline messages in just the same way as online |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2916 * messages. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2917 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2918 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2919 msim_offline_message(const PurpleBuddy *buddy) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2920 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2921 return TRUE; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2922 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2923 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2924 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2925 * Send raw data to the server, possibly with embedded NULs. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2926 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2927 * Used in prpl_info struct, so that plugins can have the most possible |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2928 * control of what is sent over the connection. Inside this prpl, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2929 * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2930 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2931 * @param gc PurpleConnection |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2932 * @param buf Buffer to send |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2933 * @param total_bytes Size of buffer to send |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2934 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2935 * @return Bytes successfully sent, or -1 on error. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2936 */ |
|
24778
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24771
diff
changeset
|
2937 /* |
|
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24771
diff
changeset
|
2938 * TODO: This needs to do non-blocking writes and use a watcher to check |
|
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24771
diff
changeset
|
2939 * when the fd is available to be written to. |
|
5f8e8b89b143
Remove a bunch of calls to msim_msg_dump(). I find it really annoying
Mark Doliner <mark@kingant.net>
parents:
24771
diff
changeset
|
2940 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2941 static int |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2942 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2943 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2944 int total_bytes_sent; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2945 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2946 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2947 g_return_val_if_fail(gc != NULL, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2948 g_return_val_if_fail(buf != NULL, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2949 g_return_val_if_fail(total_bytes >= 0, -1); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2950 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2951 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2952 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2953 /* Loop until all data is sent, or a failure occurs. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2954 total_bytes_sent = 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2955 do { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2956 int bytes_sent; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2957 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2958 bytes_sent = send(session->fd, buf + total_bytes_sent, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2959 total_bytes - total_bytes_sent, 0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2960 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2961 if (bytes_sent < 0) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2962 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2963 buf, g_strerror(errno)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2964 return total_bytes_sent; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2965 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2966 total_bytes_sent += bytes_sent; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2967 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2968 } while(total_bytes_sent < total_bytes); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2969 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2970 return total_bytes_sent; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2971 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2972 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2973 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2974 * Send raw data (given as a NUL-terminated string) to the server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2975 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2976 * @param session |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2977 * @param msg The raw data to send, in a NUL-terminated string. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2978 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2979 * @return TRUE if succeeded, FALSE if not. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2980 * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2981 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2982 gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2983 msim_send_raw(MsimSession *session, const gchar *msg) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2984 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2985 size_t len; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2986 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2987 g_return_val_if_fail(msg != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2988 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2989 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2990 len = strlen(msg); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2991 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2992 return msim_send_really_raw(session->gc, msg, len) == len; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2993 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2994 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2995 static GHashTable * |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2996 msim_get_account_text_table(PurpleAccount *unused) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2997 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2998 GHashTable *table; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
2999 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3000 table = g_hash_table_new(g_str_hash, g_str_equal); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3001 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3002 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address...")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3003 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3004 return table; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3005 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3006 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3007 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3008 * Callbacks called by Purple, to access this plugin. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3009 */ |
| 20057 | 3010 static PurplePluginProtocolInfo prpl_info = { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3011 /* options */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3012 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3013 | OPT_PROTO_MAIL_CHECK, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3014 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3015 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3016 NULL, /* user_splits */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3017 NULL, /* protocol_options */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3018 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3019 msim_list_icon, /* list_icon */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3020 NULL, /* list_emblems */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3021 msim_status_text, /* status_text */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3022 msim_tooltip_text, /* tooltip_text */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3023 msim_status_types, /* status_types */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3024 msim_blist_node_menu, /* blist_node_menu */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3025 NULL, /* chat_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3026 NULL, /* chat_info_defaults */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3027 msim_login, /* login */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3028 msim_close, /* close */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3029 msim_send_im, /* send_im */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3030 NULL, /* set_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3031 msim_send_typing, /* send_typing */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3032 msim_get_info, /* get_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3033 msim_set_status, /* set_status */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3034 msim_set_idle, /* set_idle */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3035 NULL, /* change_passwd */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3036 msim_add_buddy, /* add_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3037 NULL, /* add_buddies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3038 msim_remove_buddy, /* remove_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3039 NULL, /* remove_buddies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3040 NULL, /* add_permit */ |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
3041 msim_add_deny, /* add_deny */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3042 NULL, /* rem_permit */ |
|
24785
5f93e67a8bd7
Add support for blocking buddies on MySpace
Mark Doliner <mark@kingant.net>
parents:
24783
diff
changeset
|
3043 msim_rem_deny, /* rem_deny */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3044 NULL, /* set_permit_deny */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3045 NULL, /* join_chat */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3046 NULL, /* reject chat invite */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3047 NULL, /* get_chat_name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3048 NULL, /* chat_invite */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3049 NULL, /* chat_leave */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3050 NULL, /* chat_whisper */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3051 NULL, /* chat_send */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3052 NULL, /* keepalive */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3053 NULL, /* register_user */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3054 NULL, /* get_cb_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3055 NULL, /* get_cb_away */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3056 NULL, /* alias_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3057 NULL, /* group_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3058 NULL, /* rename_group */ |
|
24885
c6cadb7bdcf7
A couple of memory leak fixes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24805
diff
changeset
|
3059 msim_buddy_free, /* buddy_free */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3060 NULL, /* convo_closed */ |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
3061 msim_normalize, /* normalize */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3062 NULL, /* set_buddy_icon */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3063 NULL, /* remove_group */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3064 NULL, /* get_cb_real_name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3065 NULL, /* set_chat_topic */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3066 NULL, /* find_blist_chat */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3067 NULL, /* roomlist_get_list */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3068 NULL, /* roomlist_cancel */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3069 NULL, /* roomlist_expand_category */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3070 NULL, /* can_receive_file */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3071 NULL, /* send_file */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3072 NULL, /* new_xfer */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3073 msim_offline_message, /* offline_message */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3074 NULL, /* whiteboard_prpl_ops */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3075 msim_send_really_raw, /* send_raw */ |
|
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3076 NULL, /* roomlist_room_serialize */ |
|
19713
eabc8a32b1e4
Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@wiktel.com>
parents:
19681
diff
changeset
|
3077 NULL, /* unregister_user */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3078 msim_send_attention, /* send_attention */ |
|
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3079 msim_attention_types, /* attention_types */ |
|
24986
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3080 sizeof(PurplePluginProtocolInfo), /* struct_size */ |
|
23110
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
3081 msim_get_account_text_table, /* get_account_text_table */ |
|
24986
f0c2e27c7ae7
propagate from branch 'im.pidgin.pidgin' (head b478b184a46116ac87ac85b8cd352ea564224019)
Mike Ruprecht <maiku@soc.pidgin.im>
diff
changeset
|
3082 NULL, /* initiate_media */ |
|
29478
2cb6ea4420a0
Add a NULL for PurplePluginProtocolInfo::get_moods to all the plugins I build
Paul Aurich <paul@darkrain42.org>
parents:
28980
diff
changeset
|
3083 NULL, /* get_media_caps */ |
|
29847
2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents:
29682
diff
changeset
|
3084 NULL, /* get_moods */ |
|
2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents:
29682
diff
changeset
|
3085 NULL, /* set_public_alias */ |
|
31397
7c33eaed54e5
Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31203
diff
changeset
|
3086 NULL, /* get_public_alias */ |
|
7c33eaed54e5
Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31203
diff
changeset
|
3087 NULL, /* add_buddy_with_invite */ |
|
7c33eaed54e5
Update PRPL structs with new fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31203
diff
changeset
|
3088 NULL /* add_buddies_with_invite */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3089 }; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3090 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3091 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3092 * Load the plugin. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3093 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3094 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3095 msim_load(PurplePlugin *plugin) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3096 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3097 /* If compiled to use RC4 from libpurple, check if it is really there. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3098 if (!purple_ciphers_find_cipher("rc4")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3099 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3100 purple_notify_error(plugin, _("Missing Cipher"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3101 _("The RC4 cipher could not be found"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3102 _("Upgrade " |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3103 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3104 "plugin will not be loaded.")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3105 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3106 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3107 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3108 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3109 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3110 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3111 * Called when friends have been imported to buddy list on server. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3112 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3113 static void |
|
24799
c044eb54b7ac
Fix a leak in myspace prpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24798
diff
changeset
|
3114 msim_import_friends_cb(MsimSession *session, const MsimMessage *reply, gpointer user_data) |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3115 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3116 MsimMessage *body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3117 gchar *completed; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3118 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3119 /* Check if the friends were imported successfully. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3120 body = msim_msg_get_dictionary(reply, "body"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3121 g_return_if_fail(body != NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3122 completed = msim_msg_get_string(body, "Completed"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3123 msim_msg_free(body); |
|
25538
27e6ab4ff554
This should fix a sporadic crash? The behavior before was clearly wrong--
Mark Doliner <mark@kingant.net>
parents:
25419
diff
changeset
|
3124 g_return_if_fail(completed != NULL); |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3125 if (!g_str_equal(completed, "True")) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3126 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3127 purple_debug_info("msim_import_friends_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3128 "failed to import friends: %s", completed); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3129 purple_notify_error(session->account, _("Add friends from MySpace.com"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3130 _("Importing friends failed"), NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3131 g_free(completed); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3132 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3133 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3134 g_free(completed); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3135 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3136 purple_debug_info("msim_import_friends_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3137 "added friends to server-side buddy list, requesting new contacts from server"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3138 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3139 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3140 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3141 /* TODO: show, X friends have been added */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3142 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3143 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3144 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3145 * Import friends from myspace.com. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3146 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3147 static void msim_import_friends(PurplePluginAction *action) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3148 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3149 PurpleConnection *gc; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3150 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3151 gchar *group_name; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3152 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3153 gc = (PurpleConnection *)action->context; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3154 session = (MsimSession *)gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3155 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3156 group_name = "MySpace Friends"; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3157 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3158 g_return_if_fail(msim_send(session, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3159 "persist", MSIM_TYPE_INTEGER, 1, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3160 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3161 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3162 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3163 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3164 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3165 "rid", MSIM_TYPE_INTEGER, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3166 msim_new_reply_callback(session, msim_import_friends_cb, NULL), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3167 "body", MSIM_TYPE_STRING, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3168 g_strdup_printf("GroupName=%s", group_name), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3169 NULL)); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3170 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3171 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3172 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3173 * Actions menu for account. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3174 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3175 static GList * |
|
31529
79ae7200a11a
Silence a swath of warnings regarding set-but-unused.
Paul Aurich <paul@darkrain42.org>
parents:
31397
diff
changeset
|
3176 msim_actions(PurplePlugin *plugin, gpointer context /* PurpleConnection* */) |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3177 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3178 GList *menu; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3179 PurplePluginAction *act; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3180 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3181 menu = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3182 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3183 #if 0 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3184 /* TODO: find out how */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3185 act = purple_plugin_action_new(_("Find people..."), msim_); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3186 menu = g_list_append(menu, act); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3187 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3188 act = purple_plugin_action_new(_("Change IM name..."), NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3189 menu = g_list_append(menu, act); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3190 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3191 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3192 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3193 menu = g_list_append(menu, act); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3194 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3195 return menu; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3196 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3197 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3198 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3199 * Based on MSN's plugin info comments. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3200 */ |
|
19721
b2d213681176
Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents:
19714
diff
changeset
|
3201 static PurplePluginInfo info = { |
|
23109
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23105
diff
changeset
|
3202 PURPLE_PLUGIN_MAGIC, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3203 PURPLE_MAJOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3204 PURPLE_MINOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3205 PURPLE_PLUGIN_PROTOCOL, /**< type */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3206 NULL, /**< ui_requirement */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3207 0, /**< flags */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3208 NULL, /**< dependencies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3209 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3210 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3211 "prpl-myspace", /**< id */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3212 "MySpaceIM", /**< name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3213 MSIM_PRPL_VERSION_STRING, /**< version */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3214 /** summary */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3215 "MySpaceIM Protocol Plugin", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3216 /** description */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3217 "MySpaceIM Protocol Plugin", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3218 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3219 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3220 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3221 msim_load, /**< load */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3222 NULL, /**< unload */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3223 NULL, /**< destroy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3224 NULL, /**< ui_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3225 &prpl_info, /**< extra_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3226 NULL, /**< prefs_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3227 msim_actions, /**< msim_actions */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3228 NULL, /**< reserved1 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3229 NULL, /**< reserved2 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3230 NULL, /**< reserved3 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3231 NULL /**< reserved4 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3232 }; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3233 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3234 #ifdef MSIM_SELF_TEST |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3235 /* |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3236 * Test functions. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3237 * Used to test or try out the internal workings of msimprpl. If you're reading |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3238 * this code for the first time, these functions can be instructive in learning |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3239 * how msimprpl is architected. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3240 */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3241 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3242 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3243 * Test MsimMessage for basic functionality. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3244 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3245 static int |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3246 msim_test_msg(void) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3247 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3248 MsimMessage *msg, *msg_cloned, *msg2; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3249 GList *list; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3250 gchar *packed, *packed_expected, *packed_cloned; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3251 guint failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3252 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3253 failures = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3254 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3255 purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3256 msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3257 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3258 /* Append some new elements. */ |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
3259 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3)); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3260 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3261 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3262 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3263 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3264 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3265 msim_msg_dump("msg debug str=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3266 packed = msim_msg_pack(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3267 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3268 purple_debug_info("msim", "msg packed=%s\n", packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3269 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3270 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3271 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3272 |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3273 if (!g_str_equal(packed, packed_expected)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3274 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3275 ++failures, packed, packed_expected); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3276 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3277 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3278 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3279 msg_cloned = msim_msg_clone(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3280 packed_cloned = msim_msg_pack(msg_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3281 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3282 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned); |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3283 if (!g_str_equal(packed, packed_cloned)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3284 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3285 ++failures, packed_cloned, packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3286 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3287 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3288 g_free(packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3289 g_free(packed_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3290 msim_msg_free(msg_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3291 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3292 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3293 /* Try some of the more advanced functionality */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3294 list = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3295 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3296 list = g_list_prepend(list, "item3"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3297 list = g_list_prepend(list, "item2"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3298 list = g_list_prepend(list, "item1"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3299 list = g_list_prepend(list, "item0"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3300 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3301 msg = msim_msg_new(NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3302 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3303 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3304 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3305 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3306 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3307 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3308 msim_msg_dump("msg with list=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3309 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3310 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3311 msg2 = msim_msg_new(NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3312 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3313 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3314 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3315 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3316 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3317 msim_msg_free(msg2); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3318 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3319 return failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3320 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3321 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3322 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3323 * Test protocol-level escaping/unescaping. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3324 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3325 static int |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3326 msim_test_escaping(void) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3327 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3328 guint failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3329 gchar *raw, *escaped, *unescaped, *expected; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3330 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3331 failures = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3332 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3333 purple_debug_info("msim", "\n\nTesting escaping\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3334 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3335 raw = "hello/world\\hello/world"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3336 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3337 escaped = msim_escape(raw); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3338 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3339 expected = "hello/1world/2hello/1world"; |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3340 if (!g_str_equal(escaped, expected)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3341 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3342 ++failures, escaped, expected); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3343 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3344 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3345 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3346 unescaped = msim_unescape(escaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3347 g_free(escaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3348 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped); |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3349 if (!g_str_equal(raw, unescaped)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3350 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3351 ++failures, raw, unescaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3352 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3353 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3354 return failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3355 } |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3356 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3357 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3358 msim_test_all(void) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3359 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3360 guint failures; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3361 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3362 failures = 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3363 failures += msim_test_msg(); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3364 failures += msim_test_escaping(); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3365 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3366 if (failures) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3367 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3368 } else { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3369 purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3370 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3371 exit(0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3372 } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3373 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3374 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3375 #ifdef MSIM_CHECK_NEWER_VERSION |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3376 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3377 * Callback for when a currentversion.txt has been downloaded. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3378 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3379 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3380 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3381 gpointer user_data, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3382 const gchar *url_text, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3383 gsize len, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3384 const gchar *error_message) |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3385 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3386 GKeyFile *keyfile; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3387 GError *error; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3388 GString *data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3389 gchar *newest_filever; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3390 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3391 if (!url_text) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3392 purple_debug_info("msim_check_newer_version_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3393 "got error: %s\n", error_message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3394 return; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3395 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3396 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3397 purple_debug_info("msim_check_newer_version_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3398 "url_text=%s\n", url_text ? url_text : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3399 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3400 /* Prepend [group] so that GKeyFile can parse it (requires a group). */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3401 data = g_string_new(url_text); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3402 purple_debug_info("msim", "data=%s\n", data->str |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3403 ? data->str : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3404 data = g_string_prepend(data, "[group]\n"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3405 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3406 purple_debug_info("msim", "data=%s\n", data->str |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3407 ? data->str : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3408 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3409 /* url_text is variable=data\n...†*/ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3410 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3411 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3412 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3413 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3414 error = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3415 keyfile = g_key_file_new(); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3416 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3417 /* Default list seperator is ;, but currentversion.txt doesn't have |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3418 * these, so set to an unused character to avoid parsing problems. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3419 g_key_file_set_list_separator(keyfile, '\0'); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3420 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3421 g_key_file_load_from_data(keyfile, data->str, data->len, |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3422 G_KEY_FILE_NONE, &error); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3423 g_string_free(data, TRUE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3424 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3425 if (error != NULL) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3426 purple_debug_info("msim_check_newer_version_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3427 "couldn't parse, error: %d %d %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3428 error->domain, error->code, error->message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3429 g_error_free(error); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3430 return; |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3431 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3432 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3433 gchar **ks; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3434 guint n; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3435 ks = g_key_file_get_keys(keyfile, "group", &n, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3436 purple_debug_info("msim", "n=%d\n", n); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3437 guint i; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3438 for (i = 0; ks[i] != NULL; ++i) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3439 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3440 purple_debug_info("msim", "%d=%s\n", i, ks[i]); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3441 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3442 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3443 newest_filever = g_key_file_get_string(keyfile, "group", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3444 "FILEVER", &error); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3445 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3446 purple_debug_info("msim_check_newer_version_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3447 "newest filever: %s\n", newest_filever ? |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3448 newest_filever : "(NULL)"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3449 if (error != NULL) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3450 purple_debug_info("msim_check_newer_version_cb", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3451 "error: %d %d %s\n", |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3452 error->domain, error->code, error->message); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3453 g_error_free(error); |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3454 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3455 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3456 g_key_file_free(keyfile); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3457 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3458 exit(0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3459 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3460 #endif |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3461 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3462 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3463 Handle a myim:addContact command, after username has been looked up. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3464 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3465 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3466 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3467 { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3468 MsimMessage *body; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3469 gchar *username; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3470 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3471 body = msim_msg_get_dictionary(userinfo, "body"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3472 username = msim_msg_get_string(body, "UserName"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3473 msim_msg_free(body); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3474 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3475 if (!username) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3476 guint uid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3477 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3478 uid = msim_msg_get_integer(userinfo, "UserID"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3479 g_return_if_fail(uid != 0); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3480 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3481 username = g_strdup_printf("%d", uid); |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3482 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3483 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3484 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3485 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3486 g_free(username); |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3487 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3488 |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3489 /* TODO: move uid->username resolving to IM sending and buddy adding functions, |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3490 * so that user can manually add or IM by userid and username automatically |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3491 * looked up if possible? */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3492 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3493 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3494 * Handle a myim:sendIM URI command, after username has been looked up. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3495 */ |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3496 static void |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3497 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data) |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3498 { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3499 PurpleConversation *conv; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3500 MsimMessage *body; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3501 gchar *username; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3502 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3503 body = msim_msg_get_dictionary(userinfo, "body"); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3504 username = msim_msg_get_string(body, "UserName"); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3505 msim_msg_free(body); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3506 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3507 if (!username) { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3508 guint uid; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3509 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3510 uid = msim_msg_get_integer(userinfo, "UserID"); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3511 g_return_if_fail(uid != 0); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3512 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3513 username = g_strdup_printf("%d", uid); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3514 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3515 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3516 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3517 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, session->account); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3518 if (!conv) { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3519 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3520 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, username); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3521 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3522 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3523 /* Just open the window so the user can send an IM. */ |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3524 purple_conversation_present(conv); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3525 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3526 g_free(username); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3527 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3528 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3529 static gboolean |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3530 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params) |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3531 { |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3532 PurpleAccount *account; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3533 MsimSession *session; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3534 GList *l; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3535 gchar *uid_str, *cid_str; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3536 guint uid, cid; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3537 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3538 if (g_ascii_strcasecmp(proto, "myim")) |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3539 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3540 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3541 /* Parameters are case-insensitive. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3542 uid_str = g_hash_table_lookup(params, "uid"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3543 cid_str = g_hash_table_lookup(params, "cid"); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3544 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3545 uid = uid_str ? atol(uid_str) : 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3546 cid = cid_str ? atol(cid_str) : 0; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3547 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3548 /* Need a contact. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3549 g_return_val_if_fail(cid != 0, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3550 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3551 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3552 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3553 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3554 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3555 * directly use cid directly from parameters, because it might not be numeric. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3556 * It is trivial to change this to allow cID to be a username, but that's not how |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3557 * the official MySpaceIM client works, so don't provide that functionality. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3558 cid_str = g_strdup_printf("%d", cid); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3559 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3560 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3561 /* Find our account with specified user id, or use first connected account if uid=0. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3562 account = NULL; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3563 l = purple_accounts_get_all(); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3564 while (l) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3565 if (purple_account_is_connected(l->data) && |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3566 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3567 account = l->data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3568 break; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3569 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3570 l = l->next; |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3571 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3572 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3573 if (!account) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3574 purple_notify_error(NULL, _("myim URL handler"), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3575 _("No suitable MySpaceIM account could be found to open this myim URL."), |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3576 _("Enable the proper MySpaceIM account and try again.")); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3577 g_free(cid_str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3578 return FALSE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3579 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3580 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3581 session = (MsimSession *)account->gc->proto_data; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3582 g_return_val_if_fail(session != NULL, FALSE); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3583 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3584 /* Lookup userid to username. TODO: push this down, to IM sending/contact |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3585 * adding functions. */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3586 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3587 /* myim:sendIM?uID=USERID&cID=CONTACTID */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3588 if (!g_ascii_strcasecmp(cmd, "sendIM")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3589 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3590 g_free(cid_str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3591 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3592 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3593 /* myim:addContact?uID=USERID&cID=CONTACTID */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3594 } else if (!g_ascii_strcasecmp(cmd, "addContact")) { |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3595 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3596 g_free(cid_str); |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3597 return TRUE; |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3598 } |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3599 |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3600 return FALSE; |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3601 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3602 |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3603 /** |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3604 * Initialize plugin. |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3605 */ |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3606 static void |
|
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3607 init_plugin(PurplePlugin *plugin) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3608 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3609 #ifdef MSIM_SELF_TEST |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3610 msim_test_all(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3611 exit(0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3612 #endif /* MSIM_SELF_TEST */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3613 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3614 PurpleAccountOption *option; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3615 static gboolean initialized = FALSE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3616 |
|
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3617 #ifdef MSIM_CHECK_NEWER_VERSION |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3618 /* PROBLEM: MySpace's servers always return Content-Location, and |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3619 * libpurple redirects to it, infinitely, even though it is the same |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3620 * location we requested! */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3621 purple_util_fetch_url("http://im.myspace.com/nsis/currentversion.txt", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3622 FALSE, /* not full URL */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3623 "MSIMAutoUpdateAgent", /* user agent */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3624 TRUE, /* use HTTP/1.1 */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3625 msim_check_newer_version_cb, NULL); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3626 #endif |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3627 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3628 /* TODO: default to automatically try different ports. Make the user be |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3629 * able to set the first port to try (like LastConnectedPort in Windows client). */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3630 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3631 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3632 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3633 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3634 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3635 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3636 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3637 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3638 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3639 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3640 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
|
3641 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3642 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3643 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3644 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS |
|
19734
0844b0638f0b
The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evan.s@dreskin.net>
parents:
19721
diff
changeset
|
3645 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3646 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3647 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3648 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3649 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3650 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3651 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3652 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3653 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3654 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3655 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3656 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3657 /* Code below only runs once. Based on oscar.c's oscar_init(). */ |
|
24767
295464ae2d2a
No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents:
24764
diff
changeset
|
3658 if (initialized) |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3659 return; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3660 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3661 initialized = TRUE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3662 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3663 purple_signal_connect(purple_get_core(), "uri-handler", &initialized, |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3664 PURPLE_CALLBACK(msim_uri_handler), NULL); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3665 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3666 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3667 PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |
