Mercurial > pidgin
annotate libpurple/protocols/myspace/myspace.c @ 24592:104f6f755c7e
Make our purple_util_fetch_url_request() function able to handle
fetching stuff from https urls. This is needed by yahoo's
webmessenger style login, if we want to try enable it again.
And it will be needed by the new oscar authentication.
I wrote this maybe a year ago and we've been using it at Meebo
with no problems, but it would be great if one person could look
through these changes.
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sat, 06 Dec 2008 01:08:20 +0000 |
| parents | 3a3d36791a47 |
| children | 8f757b2139d2 adf153852bcf 125cac3e24ee 10e1f3c1d0db |
| rev | line source |
|---|---|
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1 /* MySpaceIM Protocol Plugin |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3 * \author Jeff Connelly |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
4 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
5 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
6 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
7 * Based on Purple's "C Plugin HOWTO" hello world example. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
8 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
9 * Code also drawn from mockprpl: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
10 * http://snarfed.org/space/purple+mock+protocol+plugin |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
11 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
12 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
13 * and some constructs also based on existing Purple plugins, which are: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
14 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
15 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
16 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
17 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
18 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
19 * This program is free software; you can redistribute it and/or modify |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
20 * it under the terms of the GNU General Public License as published by |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
21 * the Free Software Foundation; either version 2 of the License, or |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
22 * (at your option) any later version. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
23 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
24 * This program is distributed in the hope that it will be useful, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
27 * GNU General Public License for more details. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
28 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
29 * You should have received a copy of the GNU General Public License |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
30 * 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
|
31 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
32 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
33 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
34 #define PURPLE_PLUGIN |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
35 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
36 #include "myspace.h" |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
37 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
38 /* Internal functions */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
39 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
40 #ifdef MSIM_DEBUG_MSG |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
41 static void print_hash_item(gpointer key, gpointer value, gpointer user_data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
42 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
43 |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
44 static int msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
45 static gboolean msim_login_challenge(MsimSession *session, MsimMessage *msg); |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
46 static gchar *msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], const gchar *email, const gchar *password, guint *response_len); |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
47 |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
48 static gboolean msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
49 static gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
50 static gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
51 static gboolean msim_incoming_im(MsimSession *session, MsimMessage *msg); |
|
19432
210f792efd7c
In msimprpl, move zap-related code to a separate module.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19431
diff
changeset
|
52 /* static gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg); - in zap.c */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
53 static gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
54 static gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
55 static gboolean msim_incoming_unofficial_client(MsimSession *session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
56 MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
57 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
58 #ifdef MSIM_SEND_CLIENT_VERSION |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
59 static gboolean msim_send_unofficial_client(MsimSession *session, gchar *username); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
60 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
61 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
62 static void msim_get_info_cb(MsimSession *session, MsimMessage *userinfo, gpointer data); |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
63 |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
64 static void msim_set_status_code(MsimSession *session, guint code, gchar *statstring); |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
65 |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
66 static gboolean msim_process_server_info(MsimSession *session, MsimMessage *msg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
67 static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
68 static gboolean msim_process_reply(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
69 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
70 static gboolean msim_preprocess_incoming(MsimSession *session, MsimMessage *msg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
71 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
72 #ifdef MSIM_USE_KEEPALIVE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
73 static gboolean msim_check_alive(gpointer data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
74 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
75 |
|
22302
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
76 static gboolean msim_is_username_set(MsimSession *session, MsimMessage *msg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
77 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
78 static gboolean msim_process(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
79 |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
80 static MsimMessage *msim_do_postprocessing(MsimMessage *msg, const gchar *uid_field_name, const gchar *uid_before, guint uid); |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
81 static void msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, gpointer data); |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
82 static gboolean msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, const gchar *username, const gchar *uid_field_name, const gchar *uid_before); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
83 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
84 static gboolean msim_error(MsimSession *session, MsimMessage *msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
85 |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
86 static void msim_check_inbox_cb(MsimSession *session, MsimMessage *userinfo, gpointer data); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
87 static gboolean msim_check_inbox(gpointer data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
88 |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
89 static void msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond); |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
90 |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
91 |
|
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
92 static void msim_connect_cb(gpointer data, gint source, const gchar *error_message); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
93 |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
94 static void msim_import_friends(PurplePluginAction *action); |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
95 static void msim_import_friends_cb(MsimSession *session, MsimMessage *reply, gpointer user_data); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
96 static gboolean msim_get_contact_list(MsimSession *session, int what_to_do_after); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
97 |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
98 static gboolean msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
99 static void msim_uri_handler_addContact_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
|
100 static void 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
|
101 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
102 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
103 * Load the plugin. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
104 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
105 gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
106 msim_load(PurplePlugin *plugin) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
107 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
108 /* If compiled to use RC4 from libpurple, check if it is really there. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
109 if (!purple_ciphers_find_cipher("rc4")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
110 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
111 purple_notify_error(plugin, _("Missing Cipher"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
112 _("The RC4 cipher could not be found"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
113 _("Upgrade " |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
114 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
115 "plugin will not be loaded.")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
116 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
117 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
118 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
119 } |
| 22160 | 120 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
121 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
122 * Get possible user status types. Based on mockprpl. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
123 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
124 * @return GList of status types. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
125 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
126 GList * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
127 msim_status_types(PurpleAccount *acct) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
128 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
129 GList *types; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
130 PurpleStatusType *status; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
131 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
132 purple_debug_info("myspace", "returning status types\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
133 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
134 types = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
135 |
| 22160 | 136 /* 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
|
137 #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
138 purple_status_type_new_with_attrs( \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
139 prim, /* PurpleStatusPrimitive */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
140 NULL, /* id - use default */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
141 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
|
142 TRUE, /* saveable */ \ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
143 TRUE, /* user_settable */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
144 FALSE, /* not independent */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
145 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
146 /* Attributes - each status can have a message. */ \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
147 "message", \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
148 _("Message"), \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
149 purple_value_new(PURPLE_TYPE_STRING), \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
150 NULL); \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
151 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
152 \ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
153 types = g_list_append(types, status) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
154 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
155 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
156 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
157 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
158 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
159 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
160 |
|
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
|
161 /* 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
|
162 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
|
163 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
|
164 "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
|
165 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
|
166 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
|
167 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
|
168 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
|
169 |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
170 PURPLE_TUNE_ARTIST, _("Artist"), purple_value_new(PURPLE_TYPE_STRING), |
|
22266
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
171 PURPLE_TUNE_TITLE, _("Title"), purple_value_new(PURPLE_TYPE_STRING), |
|
fc31c35d8024
purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <stu@nosnilmot.com>
parents:
22264
diff
changeset
|
172 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
|
173 |
|
e808d83d797e
In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22226
diff
changeset
|
174 types = g_list_append(types, status); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
175 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
176 return types; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
177 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
178 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
179 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
180 * Return the icon name for a buddy and account. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
181 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
182 * @param acct The account to find the icon for, or NULL for protocol icon. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
183 * @param buddy The buddy to find the icon for, or NULL for the account icon. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
184 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
185 * @return The base icon name string. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
186 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
187 const gchar * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
188 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
189 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
190 /* Use a MySpace icon submitted by hbons at |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
191 * http://developer.pidgin.im/wiki/MySpaceIM. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
192 return "myspace"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
193 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
194 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
195 #ifdef MSIM_DEBUG_MSG |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
196 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
197 print_hash_item(gpointer key, gpointer value, gpointer user_data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
198 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
199 purple_debug_info("msim", "%s=%s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
200 key ? (gchar *)key : "(NULL)", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
201 value ? (gchar *)value : "(NULL)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
202 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
203 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
204 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
205 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
206 * Send raw data (given as a NUL-terminated string) to the server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
207 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
208 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
209 * @param msg The raw data to send, in a NUL-terminated string. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
210 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
211 * @return TRUE if succeeded, FALSE if not. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
212 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
213 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
214 gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
215 msim_send_raw(MsimSession *session, const gchar *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
216 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
217 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
218 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
219 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
220 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
221 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
222 return msim_send_really_raw(session->gc, msg, strlen(msg)) == |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
223 strlen(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
224 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
225 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
226 /** Send raw data to the server, possibly with embedded NULs. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
227 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
228 * Used in prpl_info struct, so that plugins can have the most possible |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
229 * control of what is sent over the connection. Inside this prpl, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
230 * msim_send_raw() is used, since it sends NUL-terminated strings (easier). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
231 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
232 * @param gc PurpleConnection |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
233 * @param buf Buffer to send |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
234 * @param total_bytes Size of buffer to send |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
235 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
236 * @return Bytes successfully sent, or -1 on error. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
237 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
238 static int |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
239 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
240 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
241 int total_bytes_sent; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
242 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
243 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
244 g_return_val_if_fail(gc != NULL, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
245 g_return_val_if_fail(buf != NULL, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
246 g_return_val_if_fail(total_bytes >= 0, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
247 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
248 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
249 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
250 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
251 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
252 /* Loop until all data is sent, or a failure occurs. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
253 total_bytes_sent = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
254 do { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
255 int bytes_sent; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
256 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
257 bytes_sent = send(session->fd, buf + total_bytes_sent, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
258 total_bytes - total_bytes_sent, 0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
259 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
260 if (bytes_sent < 0) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
261 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
262 buf, g_strerror(errno)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
263 return total_bytes_sent; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
264 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
265 total_bytes_sent += bytes_sent; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
266 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
267 } while(total_bytes_sent < total_bytes); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
268 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
269 return total_bytes_sent; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
270 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
271 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
272 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
273 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
274 * Start logging in to the MSIM servers. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
275 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
276 * @param acct Account information to use to login. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
277 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
278 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
279 msim_login(PurpleAccount *acct) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
280 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
281 PurpleConnection *gc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
282 const gchar *host; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
283 int port; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
284 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
285 g_return_if_fail(acct != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
286 g_return_if_fail(acct->username != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
287 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
288 purple_debug_info("msim", "logging in %s\n", acct->username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
289 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
290 gc = purple_account_get_connection(acct); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
291 gc->proto_data = msim_session_new(acct); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
292 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
293 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
294 /* 1. connect to server */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
295 purple_connection_update_progress(gc, _("Connecting"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
296 0, /* which connection step this is */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
297 4); /* total number of steps */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
298 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
299 host = purple_account_get_string(acct, "server", MSIM_SERVER); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
300 port = purple_account_get_int(acct, "port", MSIM_PORT); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
301 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
302 /* From purple.sf.net/api: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
303 * """Note that this function name can be misleading--although it is called |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
304 * "proxy connect," it is used for establishing any outgoing TCP connection, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
305 * whether through a proxy or not.""" */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
306 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
307 /* Calls msim_connect_cb when connected. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
308 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
309 /* TODO: try other ports if in auto mode, then save |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
310 * working port and try that first next time. */ |
| 21358 | 311 purple_connection_error_reason (gc, |
| 312 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
313 _("Couldn't create socket")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
314 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
315 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
316 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
317 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
318 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
319 * Process a login challenge, sending a response. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
320 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
321 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
322 * @param msg Login challenge message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
323 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
324 * @return TRUE if successful, FALSE if not |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
325 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
326 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
327 msim_login_challenge(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
328 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
329 PurpleAccount *account; |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
330 gchar *response; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
331 guint response_len; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
332 gchar *nc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
333 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
|
334 gboolean ret; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
335 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
336 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
337 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
338 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
339 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
|
340 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
341 account = session->account; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
342 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
343 g_return_val_if_fail(account != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
344 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
345 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
346 |
|
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
|
347 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
|
348 " bytes, decoded\n", nc_len); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
349 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
350 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
|
351 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
|
352 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH); |
| 21358 | 353 purple_connection_error_reason (session->gc, |
| 354 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
355 _("Unexpected challenge length from server")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
356 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
357 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
358 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
359 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
360 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
361 response_len = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
362 response = msim_compute_login_response(nc, account->username, account->password, &response_len); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
363 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
364 g_free(nc); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
365 |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
366 ret = msim_send(session, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
367 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
368 /* This is actually user's email address. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
369 "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
|
370 /* GString will be freed in msim_msg_free() in msim_send(). */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
371 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
372 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
373 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
374 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
375 "reconn", MSIM_TYPE_INTEGER, 0, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
376 "status", MSIM_TYPE_INTEGER, 100, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
377 "id", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
378 NULL); |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
379 |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
380 g_free(response); |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
381 |
|
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
382 return ret; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
383 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
384 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
385 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
386 * Compute the base64'd login challenge response based on username, password, nonce, and IPs. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
387 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
388 * @param nonce The base64 encoded nonce ('nc') field from the server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
389 * @param email User's email address (used as login name). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
390 * @param password User's cleartext password. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
391 * @param response_len Will be written with response length. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
392 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
393 * @return Binary login challenge response, ready to send to the server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
394 * Must be g_free()'d when finished. NULL if error. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
395 */ |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
396 static gchar * |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
397 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
398 const gchar *email, const gchar *password, guint *response_len) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
399 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
400 PurpleCipherContext *key_context; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
401 PurpleCipher *sha1; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
402 PurpleCipherContext *rc4; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
403 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
404 guchar hash_pw[HASH_SIZE]; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
405 guchar key[HASH_SIZE]; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
406 gchar *password_utf16le, *password_utf8_lc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
407 guchar *data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
408 guchar *data_out; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
409 size_t data_len, data_out_len; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
410 gsize conv_bytes_read, conv_bytes_written; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
411 GError *conv_error; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
412 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
413 int i; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
414 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
415 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
416 g_return_val_if_fail(nonce != NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
417 g_return_val_if_fail(email != NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
418 g_return_val_if_fail(password != NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
419 g_return_val_if_fail(response_len != NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
420 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
421 /* Convert password to lowercase (required for passwords containing |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
422 * uppercase characters). MySpace passwords are lowercase, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
423 * see ticket #2066. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
424 password_utf8_lc = g_utf8_strdown(password, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
425 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
426 /* Convert ASCII password to UTF16 little endian */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
427 purple_debug_info("msim", "converting password to UTF-16LE\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
428 conv_error = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
429 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
430 &conv_bytes_read, &conv_bytes_written, &conv_error); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
431 g_free(password_utf8_lc); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
432 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
433 g_return_val_if_fail(conv_bytes_read == strlen(password), NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
434 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
435 if (conv_error != NULL) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
436 purple_debug_error("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
437 "g_convert password UTF8->UTF16LE failed: %s", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
438 conv_error->message); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
439 g_error_free(conv_error); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
440 return NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
441 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
442 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
443 /* Compute password hash */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
444 purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
445 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
446 g_free(password_utf16le); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
447 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
448 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
449 purple_debug_info("msim", "pwhash = "); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
450 for (i = 0; i < sizeof(hash_pw); i++) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
451 purple_debug_info("msim", "%.2x ", hash_pw[i]); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
452 purple_debug_info("msim", "\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
453 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
454 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
455 /* key = sha1(sha1(pw) + nonce2) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
456 sha1 = purple_ciphers_find_cipher("sha1"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
457 key_context = purple_cipher_context_new(sha1, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
458 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
459 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
460 purple_cipher_context_digest(key_context, sizeof(key), key, NULL); |
|
20150
52dce2882c03
Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20057
diff
changeset
|
461 purple_cipher_context_destroy(key_context); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
462 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
463 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
464 purple_debug_info("msim", "key = "); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
465 for (i = 0; i < sizeof(key); i++) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
466 purple_debug_info("msim", "%.2x ", key[i]); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
467 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
468 purple_debug_info("msim", "\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
469 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
470 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
471 rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
472 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
473 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
474 * but only first 0x10 used for the RC4 key. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
475 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
476 purple_cipher_context_set_key(rc4, key); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
477 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
478 /* TODO: obtain IPs of network interfaces */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
479 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
480 /* rc4 encrypt: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
481 * nonce1+email+IP list */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
482 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
483 data_len = NONCE_SIZE + strlen(email) + MSIM_LOGIN_IP_LIST_LEN; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
484 data = g_new0(guchar, data_len); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
485 memcpy(data, nonce, NONCE_SIZE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
486 memcpy(data + NONCE_SIZE, email, strlen(email)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
487 memcpy(data + NONCE_SIZE + strlen(email), MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
488 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
489 data_out = g_new0(guchar, data_len); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
490 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
491 purple_cipher_context_encrypt(rc4, (const guchar *)data, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
492 data_len, data_out, &data_out_len); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
493 purple_cipher_context_destroy(rc4); |
|
20664
324c25c2daad
Remove g_assert() from msimprpl.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20658
diff
changeset
|
494 g_free(data); |
|
324c25c2daad
Remove g_assert() from msimprpl.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20658
diff
changeset
|
495 |
|
324c25c2daad
Remove g_assert() from msimprpl.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20658
diff
changeset
|
496 if (data_out_len != data_len) { |
|
324c25c2daad
Remove g_assert() from msimprpl.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20658
diff
changeset
|
497 purple_debug_info("msim", "msim_compute_login_response: " |
|
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
|
498 "data length mismatch: %" 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
|
499 G_GSIZE_FORMAT "\n", data_out_len, data_len); |
|
20664
324c25c2daad
Remove g_assert() from msimprpl.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20658
diff
changeset
|
500 } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
501 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
502 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
503 purple_debug_info("msim", "response=<%s>\n", data_out); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
504 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
505 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
506 *response_len = data_out_len; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
507 |
|
20658
7efdc052539d
Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <mark@kingant.net>
parents:
20628
diff
changeset
|
508 return (gchar *)data_out; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
509 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
510 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
511 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
512 * Schedule an IM to be sent once the user ID is looked up. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
513 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
514 * @param gc Connection. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
515 * @param who A user id, email, or username to send the message to. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
516 * @param message Instant message text to send. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
517 * @param flags Flags. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
518 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
519 * @return 1 if successful or postponed, -1 if failed |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
520 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
521 * Allows sending to a user by username, email address, or userid. If |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
522 * a username or email address is given, the userid must be looked up. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
523 * This function does that by calling msim_postprocess_outgoing(). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
524 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
525 int |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
526 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
527 PurpleMessageFlags flags) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
528 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
529 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
530 gchar *message_msim; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
531 int rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
532 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
533 g_return_val_if_fail(gc != NULL, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
534 g_return_val_if_fail(who != NULL, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
535 g_return_val_if_fail(message != NULL, -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
536 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
537 /* 'flags' has many options, not used here. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
538 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
539 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
540 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
541 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
542 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
543 message_msim = html_to_msim_markup(session, message); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
544 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
545 if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
546 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
547 * return 1 even if the message could not be sent, since I don't know if |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
548 * it has failed yet--because the IM is only sent after the userid is |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
549 * retrieved from the server (which happens after this function returns). |
| 22160 | 550 * If an error does occur, it should be logged to the IM window. |
| 22156 | 551 */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
552 rc = 1; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
553 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
554 rc = -1; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
555 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
556 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
557 g_free(message_msim); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
558 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
559 return rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
560 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
561 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
562 /** Send a buddy message of a given type. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
563 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
564 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
565 * @param who Username to send message to. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
566 * @param text Message text to send. Not freed; will be copied. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
567 * @param type A MSIM_BM_* constant. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
568 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
569 * @return TRUE if success, FALSE if fail. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
570 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
571 * Buddy messages ('bm') include instant messages, action messages, status messages, etc. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
572 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
573 */ |
|
19432
210f792efd7c
In msimprpl, move zap-related code to a separate module.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19431
diff
changeset
|
574 gboolean |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
575 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
576 int type) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
577 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
578 gboolean rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
579 MsimMessage *msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
580 const gchar *from_username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
581 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
582 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
583 g_return_val_if_fail(who != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
584 g_return_val_if_fail(text != NULL, FALSE); |
| 22160 | 585 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
586 from_username = session->account->username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
587 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
588 g_return_val_if_fail(from_username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
589 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
590 purple_debug_info("msim", "sending %d message from %s to %s: %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
591 type, from_username, who, text); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
592 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
593 msg = msim_msg_new( |
| 22160 | 594 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type), |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
595 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
596 /* 't' will be inserted here */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
597 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
598 "msg", MSIM_TYPE_STRING, g_strdup(text), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
599 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
600 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
601 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
602 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
603 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
604 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
605 return rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
606 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
607 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
608 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
609 /** Record the client version in the buddy list, from an incoming message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
610 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
611 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
612 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
613 gchar *username, *cv; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
614 gboolean ret; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
615 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
616 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
617 username = msim_msg_get_string(msg, "_username"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
618 cv = msim_msg_get_string(msg, "cv"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
619 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
620 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
621 if (!cv) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
622 /* No client version to record, don't worry about it. */ |
|
20753
61045691aa72
Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20685
diff
changeset
|
623 g_free(username); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
624 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
625 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
626 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
627 user = msim_find_user(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
628 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
629 if (user) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
630 user->client_cv = atol(cv); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
631 ret = TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
632 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
633 ret = FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
634 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
635 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
636 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
637 g_free(cv); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
638 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
639 return ret; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
640 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
641 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
642 /** Handle an incoming buddy message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
643 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
644 msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
645 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
646 guint bm; |
|
22222
433233d3db10
merge of '2e288b76540410af9b0ca21669ffb7e085633d59'
Mark Doliner <mark@kingant.net>
diff
changeset
|
647 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
648 bm = msim_msg_get_integer(msg, "bm"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
649 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
650 msim_incoming_bm_record_cv(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
651 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
652 switch (bm) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
653 case MSIM_BM_STATUS: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
654 return msim_incoming_status(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
655 case MSIM_BM_INSTANT: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
656 return msim_incoming_im(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
657 case MSIM_BM_ACTION: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
658 return msim_incoming_action(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
659 case MSIM_BM_MEDIA: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
660 return msim_incoming_media(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
661 case MSIM_BM_UNOFFICIAL_CLIENT: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
662 return msim_incoming_unofficial_client(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
663 default: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
664 /* Not really an IM, but show it for informational |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
665 * purposes during development. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
666 return msim_incoming_im(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
667 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
668 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
669 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
670 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
671 * Handle an incoming instant 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 * @param session The session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
674 * @param msg Message from the server, containing 'f' (userid from) and 'msg'. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
675 * Should also contain username in _username from preprocessing. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
676 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
677 * @return TRUE if successful. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
678 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
679 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
680 msim_incoming_im(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
681 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
682 gchar *username, *msg_msim_markup, *msg_purple_markup; |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
683 gchar *userid; |
|
19570
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
684 time_t time_received; |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
685 PurpleConversation *conv; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
686 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
687 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
688 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
689 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
690 username = msim_msg_get_string(msg, "_username"); |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
691 /* I know this isn't really a string... but we need it to be one for |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
692 * purple_find_conversation_with_account(). */ |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
693 userid = msim_msg_get_string(msg, "f"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
694 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
695 |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
696 purple_debug_info("msim_incoming_im", "UserID is %s", userid); |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
697 |
|
22607
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
698 if (msim_is_userid(username)) { |
|
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
699 purple_debug_info("msim", "Ignoring message from spambot (%s) on account %s\n", |
|
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
700 username, purple_account_get_username(session->account)); |
|
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
701 g_free(username); |
|
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
702 return FALSE; |
|
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
703 } |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
704 |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
705 /* See if a conversation with their UID already exists...*/ |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
706 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, userid, session->account); |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
707 if (conv) { |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
708 /* Since the conversation exists... We need to normalize it */ |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
709 purple_conversation_set_name(conv, username); |
|
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
710 } |
|
22607
c7742b830585
Updated patch from Justin 'Jaywalker' Williams to discard messages from spambots in msim. Closes #5143.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22486
diff
changeset
|
711 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
712 msg_msim_markup = msim_msg_get_string(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
713 g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
714 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
715 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
716 g_free(msg_msim_markup); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
717 |
|
19570
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
718 time_received = msim_msg_get_integer(msg, "date"); |
|
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
719 if (!time_received) { |
|
24406
1406a2fa649d
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@wiktel.com>
parents:
23332
diff
changeset
|
720 purple_debug_info("msim_incoming_im", "date in message not set.\n"); |
|
19570
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
721 time_received = time(NULL); |
|
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
722 } |
|
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
723 |
|
94a2a1ccd6ec
Use the sent timestamp in incoming instant messages instead of the current
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19466
diff
changeset
|
724 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
725 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
726 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
727 g_free(msg_purple_markup); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
728 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
729 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
730 } |
|
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 * Process unrecognized information. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
734 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
735 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
736 * @param msg An MsimMessage that was unrecognized, or NULL. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
737 * @param note Information on what was unrecognized, or NULL. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
738 */ |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
739 void |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
740 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
741 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
742 /* TODO: Some more context, outwardly equivalent to a backtrace, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
743 * for helping figure out what this msg is for. What was going on? |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
744 * But not too much information so that a user |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
745 * posting this dump reveals confidential information. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
746 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
747 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
748 /* TODO: dump unknown msgs to file, so user can send them to me |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
749 * if they wish, to help add support for new messages (inspired |
| 22156 | 750 * by Alexandr Shutko, who maintains OSCAR protocol documentation). |
| 751 * | |
| 752 * Filed enhancement ticket for libpurple as #4688. | |
| 753 */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
754 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
755 purple_debug_info("msim", "Unrecognized data on account for %s\n", |
|
19353
af0e77c44667
MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19352
diff
changeset
|
756 (session && session->account && session->account->username) ? |
|
af0e77c44667
MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19352
diff
changeset
|
757 session->account->username : "(NULL)"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
758 if (note) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
759 purple_debug_info("msim", "(Note: %s)\n", note); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
760 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
761 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
762 if (msg) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
763 msim_msg_dump("Unrecognized message dump: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
764 } |
|
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 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
768 * Handle an incoming action message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
769 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
770 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
771 * @param msg |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
772 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
773 * @return TRUE if successful. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
774 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
775 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
776 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
777 msim_incoming_action(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
778 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
779 gchar *msg_text, *username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
780 gboolean rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
781 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
782 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
783 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
784 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
785 msg_text = msim_msg_get_string(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
786 g_return_val_if_fail(msg_text != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
787 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
788 username = msim_msg_get_string(msg, "_username"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
789 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
790 |
|
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
|
791 purple_debug_info("msim", "msim_incoming_action: action <%s> from <%s>\n", |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
792 msg_text, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
793 |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
794 if (g_str_equal(msg_text, "%typing%")) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
795 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
796 rc = TRUE; |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
797 } else if (g_str_equal(msg_text, "%stoptyping%")) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
798 serv_got_typing_stopped(session->gc, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
799 rc = TRUE; |
|
22225
d2fc168b5e7a
Fix zap functionality in MySpaceIM.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22222
diff
changeset
|
800 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
801 rc = msim_incoming_zap(session, msg); |
| 22161 | 802 } else if (strstr(msg_text, "!!!GroupCount=")) { |
| 803 /* TODO: support group chats. I think the number in msg_text has | |
| 804 * something to do with the 'gid' field. */ | |
| 805 purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text); | |
| 806 | |
| 807 rc = TRUE; | |
| 808 } else if (strstr(msg_text, "!!!Offline=")) { | |
| 809 /* TODO: support group chats. This one might mean a user | |
| 810 * went offline or exited the chat. */ | |
| 811 purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text); | |
|
22222
433233d3db10
merge of '2e288b76540410af9b0ca21669ffb7e085633d59'
Mark Doliner <mark@kingant.net>
diff
changeset
|
812 |
| 22161 | 813 rc = TRUE; |
| 814 } else if (msim_msg_get_integer(msg, "aid") != 0) { | |
| 815 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n", | |
| 816 msim_msg_get_integer(msg, "aid"), | |
| 817 msim_msg_get_integer(msg, "f"), | |
| 818 msg_text); | |
|
22222
433233d3db10
merge of '2e288b76540410af9b0ca21669ffb7e085633d59'
Mark Doliner <mark@kingant.net>
diff
changeset
|
819 |
| 22161 | 820 rc = TRUE; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
821 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
822 msim_unrecognized(session, msg, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
823 "got to msim_incoming_action but unrecognized value for 'msg'"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
824 rc = FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
825 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
826 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
827 g_free(msg_text); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
828 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
829 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
830 return rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
831 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
832 |
|
19351
5461821ac122
g_memdup() the icon data before setting it as the buddy icon.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19350
diff
changeset
|
833 /* Process an incoming media (message background?) message. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
834 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
835 msim_incoming_media(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
836 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
837 gchar *username, *text; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
838 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
839 username = msim_msg_get_string(msg, "_username"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
840 text = msim_msg_get_string(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
841 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
842 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
843 g_return_val_if_fail(text != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
844 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
845 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
846 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
847 /* Media messages are sent when the user opens a window to someone. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
848 * Tell libpurple they started typing and stopped typing, to inform the Psychic |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
849 * Mode plugin so it too can open a window to the user. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
850 serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
851 serv_got_typing_stopped(session->gc, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
852 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
853 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
854 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
855 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
856 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
857 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
858 /* Process an incoming "unofficial client" message. The plugin for |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
859 * Miranda IM sends this message with the plugin information. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
860 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
861 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
862 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
863 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
864 gchar *username, *client_info; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
865 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
866 username = msim_msg_get_string(msg, "_username"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
867 client_info = msim_msg_get_string(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
868 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
869 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
870 g_return_val_if_fail(client_info != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
871 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
872 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
873 username, client_info); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
874 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
875 user = msim_find_user(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
876 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
877 g_return_val_if_fail(user != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
878 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
879 if (user->client_info) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
880 g_free(user->client_info); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
881 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
882 user->client_info = client_info; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
883 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
884 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
885 /* Do not free client_info - the MsimUser now owns it. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
886 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
887 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
888 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
889 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
890 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
891 #ifdef MSIM_SEND_CLIENT_VERSION |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
892 /** Send our client version to another unofficial client that understands it. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
893 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
894 msim_send_unofficial_client(MsimSession *session, gchar *username) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
895 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
896 gchar *our_info; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
897 gboolean ret; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
898 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
899 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
900 PURPLE_MAJOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
901 PURPLE_MINOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
902 PURPLE_MICRO_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
903 MSIM_PRPL_VERSION_STRING); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
904 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
905 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
906 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
907 return ret; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
908 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
909 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
910 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
911 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
912 * Handle when our user starts or stops typing to another user. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
913 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
914 * @param gc |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
915 * @param name The buddy name to which our user is typing to |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
916 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
917 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
918 * @return 0 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
919 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
920 unsigned int |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
921 msim_send_typing(PurpleConnection *gc, const gchar *name, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
922 PurpleTypingState state) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
923 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
924 const gchar *typing_str; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
925 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
926 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
927 g_return_val_if_fail(gc != NULL, 0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
928 g_return_val_if_fail(name != NULL, 0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
929 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
930 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
931 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
932 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
933 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
934 switch (state) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
935 case PURPLE_TYPING: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
936 typing_str = "%typing%"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
937 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
938 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
939 case PURPLE_TYPED: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
940 case PURPLE_NOT_TYPING: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
941 default: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
942 typing_str = "%stoptyping%"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
943 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
944 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
945 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
946 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
947 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
948 return 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
949 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
950 |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
951 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
952 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
953 /** Callback for msim_get_info(), for when user info is received. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
954 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
955 msim_get_info_cb(MsimSession *session, MsimMessage *user_info_msg, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
956 gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
957 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
958 MsimMessage *msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
959 gchar *username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
960 PurpleNotifyUserInfo *user_info; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
961 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
962 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
963 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
964 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
965 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
966 orthogonality. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
967 msg = (MsimMessage *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
968 g_return_if_fail(msg != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
969 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
970 username = msim_msg_get_string(msg, "user"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
971 if (!username) { |
|
19654
941965d6fd88
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19638
diff
changeset
|
972 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
973 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
974 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
975 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
976 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
977 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
978 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
979 user = msim_find_user(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
980 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
981 if (!user) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
982 /* User isn't on blist, create a temporary user to store info. */ |
| 22156 | 983 /* TODO: is this legit, or is it somehow responsible for #3444? */ |
|
20982
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
984 PurpleBuddy *buddy; |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
985 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
986 user = g_new0(MsimUser, 1); |
|
20982
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
987 user->temporary_user = TRUE; |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
988 |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
989 buddy = purple_buddy_new(session->account, username, NULL); |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
990 user->buddy = buddy; |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
991 buddy->proto_data = (gpointer)user; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
992 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
993 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
994 /* Update user structure with new information */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
995 msim_store_user_info(session, user_info_msg, user); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
996 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
997 user_info = purple_notify_user_info_new(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
998 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
999 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1000 msim_append_user_info(session, user_info, user, TRUE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1001 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1002 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1003 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1004 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1005 purple_notify_user_info_destroy(user_info); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1006 |
|
20982
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
1007 if (user->temporary_user) { |
|
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
1008 purple_blist_remove_buddy(user->buddy); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1009 g_free(user->client_info); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1010 g_free(user->gender); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1011 g_free(user->location); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1012 g_free(user->headline); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1013 g_free(user->display_name); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1014 g_free(user->username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1015 g_free(user->image_url); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1016 g_free(user); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1017 } |
|
20753
61045691aa72
Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20685
diff
changeset
|
1018 g_free(username); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1019 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1020 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1021 /** Retrieve a user's profile. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1022 * @param username Username, user ID, or email address to lookup. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1023 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1024 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1025 msim_get_info(PurpleConnection *gc, const gchar *username) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1026 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1027 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1028 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1029 guint uid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1030 gchar *user_to_lookup; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1031 MsimMessage *user_msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1032 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1033 g_return_if_fail(gc != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1034 g_return_if_fail(username != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1035 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1036 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1037 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1038 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1039 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1040 /* Obtain uid of buddy. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1041 user = msim_find_user(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1042 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1043 /* If is on buddy list, lookup by uid since it is faster. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1044 if (user && (uid = purple_blist_node_get_int(&user->buddy->node, "UserID"))) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1045 user_to_lookup = g_strdup_printf("%d", uid); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1046 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1047 /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1048 user_to_lookup = g_strdup(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1049 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1050 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1051 /* Pass the username to msim_get_info_cb(), because since we lookup |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1052 * by userid, the userinfo message will only contain the uid (not |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1053 * the username) but it would be useful to display the username too. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1054 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1055 user_msg = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1056 "user", MSIM_TYPE_STRING, g_strdup(username), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1057 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1058 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1059 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1060 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1061 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1062 g_free(user_to_lookup); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1063 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1064 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1065 /** Set your status - callback for when user manually sets it. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1066 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1067 msim_set_status(PurpleAccount *account, PurpleStatus *status) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1068 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1069 PurpleStatusType *type; |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1070 PurplePresence *pres; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1071 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1072 guint status_code; |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1073 const gchar *message; |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1074 gchar *stripped; |
| 22156 | 1075 gchar *unrecognized_msg; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1076 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1077 session = (MsimSession *)account->gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1078 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1079 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1080 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1081 type = purple_status_get_type(status); |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1082 pres = purple_status_get_presence(status); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1083 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1084 switch (purple_status_type_get_primitive(type)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1085 case PURPLE_STATUS_AVAILABLE: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1086 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1087 MSIM_STATUS_CODE_ONLINE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1088 status_code = MSIM_STATUS_CODE_ONLINE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1089 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1090 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1091 case PURPLE_STATUS_INVISIBLE: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1092 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1093 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1094 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1095 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1096 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1097 case PURPLE_STATUS_AWAY: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1098 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1099 MSIM_STATUS_CODE_AWAY); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1100 status_code = MSIM_STATUS_CODE_AWAY; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1101 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1102 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1103 default: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1104 purple_debug_info("msim", "msim_set_status: unknown " |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1105 "status interpreting as online"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1106 status_code = MSIM_STATUS_CODE_ONLINE; |
| 22156 | 1107 |
| 1108 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", | |
| 1109 purple_status_type_get_primitive(type)); | |
| 1110 msim_unrecognized(session, NULL, unrecognized_msg); | |
| 1111 g_free(unrecognized_msg); | |
| 1112 | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1113 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1114 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1115 |
|
21709
b2c2e935a150
Remove useless cast I missed before.
Kevin Stange <kevin@simguy.net>
parents:
21707
diff
changeset
|
1116 message = purple_status_get_attr_string(status, "message"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1117 |
|
19592
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
1118 /* Status strings are plain text. */ |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1119 if (message != NULL) |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1120 stripped = purple_markup_strip_html(message); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1121 else |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1122 stripped = g_strdup(""); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1123 |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1124 msim_set_status_code(session, status_code, stripped); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1125 |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1126 /* If we should be idle, set that status. Time is irrelevant here. */ |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1127 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1128 msim_set_idle(account->gc, 1); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1129 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1130 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1131 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1132 /** Go idle. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1133 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1134 msim_set_idle(PurpleConnection *gc, int time) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1135 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1136 MsimSession *session; |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1137 PurpleStatus *status; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1138 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1139 g_return_if_fail(gc != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1140 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1141 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1142 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1143 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1144 |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1145 status = purple_account_get_active_status(session->account); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1146 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1147 if (time == 0) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1148 /* Going back from idle. In msim, idle is mutually exclusive |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1149 * from the other states (you can only be away or idle, but not |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1150 * both, for example), so by going non-idle I go back to what |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1151 * libpurple says I should be. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1152 */ |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1153 msim_set_status(session->account, status); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1154 } else { |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1155 const gchar *message; |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1156 gchar *stripped; |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1157 |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1158 /* Set the idle message to the status message from the real |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1159 * current status. |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1160 */ |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1161 message = purple_status_get_attr_string(status, "message"); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1162 if (message != NULL) |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1163 stripped = purple_markup_strip_html(message); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1164 else |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1165 stripped = g_strdup(""); |
|
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1166 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1167 /* msim doesn't support idle time, so just go idle */ |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1168 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1169 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1170 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1171 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1172 /** Set status using an MSIM_STATUS_CODE_* value. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1173 * @param status_code An MSIM_STATUS_CODE_* value. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1174 * @param statstring Status string, must be a dynamic string (will be freed by msim_send). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1175 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1176 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1177 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1178 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1179 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1180 g_return_if_fail(statstring != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1181 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1182 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1183 status_code, statstring); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1184 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1185 if (!msim_send(session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1186 "status", MSIM_TYPE_INTEGER, status_code, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1187 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1188 "statstring", MSIM_TYPE_STRING, statstring, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1189 "locstring", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1190 NULL)) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1191 { |
|
19654
941965d6fd88
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19638
diff
changeset
|
1192 purple_debug_info("msim", "msim_set_status: failed to set status\n"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1193 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1194 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1195 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1196 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1197 /** After a uid is resolved to username, tag it with the username and submit for processing. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1198 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1199 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1200 * @param userinfo Response messsage to resolving request. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1201 * @param data MsimMessage *, the message to attach information to. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1202 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1203 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1204 msim_incoming_resolved(MsimSession *session, MsimMessage *userinfo, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1205 gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1206 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1207 gchar *username; |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1208 MsimMessage *msg, *body; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1209 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1210 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1211 g_return_if_fail(userinfo != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1212 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1213 body = msim_msg_get_dictionary(userinfo, "body"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1214 g_return_if_fail(body != NULL); |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1215 |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1216 username = msim_msg_get_string(body, "UserName"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1217 g_return_if_fail(username != NULL); |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1218 /* Note: username will be owned by 'msg' below. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1219 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1220 msg = (MsimMessage *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1221 g_return_if_fail(msg != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1222 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1223 /* TODO: more elegant solution than below. attach whole message? */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1224 /* Special elements name beginning with '_', we'll use internally within the |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1225 * program (did not come directly from the wire). */ |
|
20753
61045691aa72
Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20685
diff
changeset
|
1226 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */ |
|
22222
433233d3db10
merge of '2e288b76540410af9b0ca21669ffb7e085633d59'
Mark Doliner <mark@kingant.net>
diff
changeset
|
1227 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1228 /* TODO: attach more useful information, like ImageURL */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1229 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1230 msim_process(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1231 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1232 /* TODO: Free copy cloned from msim_preprocess_incoming(). */ |
| 22156 | 1233 /* msim_msg_free(msg); */ |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1234 msim_msg_free(body); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1235 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1236 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1237 /* Lookup a username by userid, from buddy list. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1238 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1239 * @param wanted_uid |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1240 * |
|
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1241 * @return Username of wanted_uid, if on blist, or NULL. |
|
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1242 * This is a static string, so don't free it. Copy it if needed. |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1243 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1244 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1245 static const gchar * |
| 22159 | 1246 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid) |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1247 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1248 GSList *buddies, *cur; |
|
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1249 const gchar *ret; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1250 |
| 22159 | 1251 buddies = purple_find_buddies(account, NULL); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1252 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1253 if (!buddies) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1254 { |
|
19654
941965d6fd88
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19638
diff
changeset
|
1255 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1256 return NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1257 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1258 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1259 ret = NULL; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1260 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1261 for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1262 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1263 PurpleBuddy *buddy; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1264 guint uid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1265 const gchar *name; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1266 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1267 /* See finch/gnthistory.c */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1268 buddy = cur->data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1269 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1270 uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1271 name = purple_buddy_get_name(buddy); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1272 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1273 if (uid == wanted_uid) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1274 { |
|
22226
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
1275 ret = name; |
|
20150
52dce2882c03
Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20057
diff
changeset
|
1276 break; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1277 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1278 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1279 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1280 g_slist_free(buddies); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1281 return ret; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1282 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1283 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1284 /** Preprocess incoming messages, resolving as needed, calling msim_process() when ready to process. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1285 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1286 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1287 * @param msg MsimMessage *, freed by caller. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1288 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1289 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1290 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1291 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1292 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1293 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1294 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1295 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1296 guint uid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1297 const gchar *username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1298 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1299 /* 'f' = userid message is from, in buddy messages */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1300 uid = msim_msg_get_integer(msg, "f"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1301 |
| 22159 | 1302 username = msim_uid2username_from_blist(session->account, uid); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1303 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1304 if (username) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1305 /* Know username already, use it. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1306 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1307 username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1308 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1309 return msim_process(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1310 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1311 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1312 gchar *from; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1313 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1314 /* Send lookup request. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1315 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1316 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1317 from = msim_msg_get_string(msg, "f"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1318 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1319 g_free(from); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1320 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1321 /* indeterminate */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1322 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1323 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1324 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1325 /* Nothing to resolve - send directly to processing. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1326 return msim_process(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1327 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1328 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1329 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1330 #ifdef MSIM_USE_KEEPALIVE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1331 /** Check if the connection is still alive, based on last communication. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1332 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1333 msim_check_alive(gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1334 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1335 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1336 time_t delta; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1337 gchar *errmsg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1338 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1339 session = (MsimSession *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1340 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1341 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1342 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1343 delta = time(NULL) - session->last_comm; |
| 22156 | 1344 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1345 if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
|
23332
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1346 errmsg = g_strdup_printf(ngettext("Connection to server lost (no data received within %d second)", |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1347 "Connection to server lost (no data received within %d seconds)", |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1348 (int)delta), |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
1349 (int)delta); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1350 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1351 purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1352 errmsg, MSIM_KEEPALIVE_INTERVAL); |
| 22156 | 1353 purple_connection_error_reason(session->gc, |
| 21358 | 1354 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errmsg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1355 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1356 purple_notify_error(session->gc, NULL, errmsg, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1357 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1358 g_free(errmsg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1359 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1360 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1361 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1362 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1363 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1364 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1365 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1366 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1367 /** Handle mail reply checks. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1368 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1369 msim_check_inbox_cb(MsimSession *session, MsimMessage *reply, gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1370 { |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1371 MsimMessage *body; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1372 guint old_inbox_status; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1373 guint i, n; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1374 const gchar *froms[5], *tos[5], *urls[5], *subjects[5]; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1375 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1376 /* Information for each new inbox message type. */ |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1377 static struct |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1378 { |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1379 const gchar *key; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1380 guint bit; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1381 const gchar *url; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1382 const gchar *text; |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1383 } message_types[] = { |
|
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1384 { "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
|
1385 { "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
|
1386 { "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
|
1387 { "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
|
1388 { "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
|
1389 }; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1390 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1391 /* Can't write _()'d strings in array initializers. Workaround. */ |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1392 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
|
1393 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
|
1394 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
|
1395 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
|
1396 message_types[4].text = _("New picture comments"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1397 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1398 g_return_if_fail(reply != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1399 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1400 msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1401 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1402 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
|
1403 |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1404 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
|
1405 return; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1406 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1407 old_inbox_status = session->inbox_status; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1408 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1409 n = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1410 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1411 for (i = 0; i < sizeof(message_types) / sizeof(message_types[0]); ++i) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1412 const gchar *key; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1413 guint bit; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1414 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1415 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
|
1416 bit = message_types[i].bit; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1417 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1418 if (msim_msg_get(body, key)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1419 /* Notify only on when _changes_ from no mail -> has mail |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1420 * (edge triggered) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1421 if (!(session->inbox_status & bit)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1422 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1423 key ? key : "(NULL)", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1424 |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1425 subjects[n] = message_types[i].text; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1426 froms[n] = _("MySpace"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1427 tos[n] = session->username; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1428 /* TODO: append token, web challenge, so automatically logs in. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1429 * Would also need to free strings because they won't be static |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1430 */ |
|
19430
0104035fd510
In msimprpl's mail notifications, change four parallel arrays into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19429
diff
changeset
|
1431 urls[n] = message_types[i].url; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1432 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1433 ++n; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1434 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1435 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1436 "msim_check_inbox_cb: already notified of %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1437 key ? key : "(NULL)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1438 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1439 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1440 session->inbox_status |= bit; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1441 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1442 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1443 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1444 if (n) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1445 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1446 "msim_check_inbox_cb: notifying of %d\n", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1447 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1448 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1449 purple_notify_emails(session->gc, /* handle */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1450 n, /* count */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1451 TRUE, /* detailed */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1452 subjects, froms, tos, urls, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1453 NULL, /* PurpleNotifyCloseCallback cb */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1454 NULL); /* gpointer user_data */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1455 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1456 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1457 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1458 msim_msg_free(body); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1459 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1460 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1461 /* Send request to check if there is new mail. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1462 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1463 msim_check_inbox(gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1464 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1465 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1466 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1467 session = (MsimSession *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1468 |
|
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1469 if (!MSIM_SESSION_VALID(session)) { |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1470 purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n"); |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1471 return FALSE; |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1472 } |
|
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1473 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1474 purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1475 g_return_val_if_fail(msim_send(session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1476 "persist", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1477 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1478 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1479 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1480 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1481 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1482 "rid", MSIM_TYPE_INTEGER, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1483 msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1484 "body", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1485 NULL), TRUE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1486 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1487 /* Always return true, so that we keep checking for mail. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1488 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1489 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1490 |
|
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1491 #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
|
1492 /** Callback for when a currentversion.txt has been downloaded. */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1493 static void |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1494 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data, |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1495 gpointer user_data, |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1496 const gchar *url_text, |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1497 gsize len, |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1498 const gchar *error_message) |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1499 { |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1500 GKeyFile *keyfile; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1501 GError *error; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1502 GString *data; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1503 gchar *newest_filever; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1504 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1505 if (!url_text) { |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1506 purple_debug_info("msim_check_newer_version_cb", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1507 "got error: %s\n", error_message); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1508 return; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1509 } |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1510 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1511 purple_debug_info("msim_check_newer_version_cb", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1512 "url_text=%s\n", url_text ? url_text : "(NULL)"); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1513 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1514 /* Prepend [group] so that GKeyFile can parse it (requires a group). */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1515 data = g_string_new(url_text); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1516 purple_debug_info("msim", "data=%s\n", data->str |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1517 ? data->str : "(NULL)"); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1518 data = g_string_prepend(data, "[group]\n"); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1519 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1520 purple_debug_info("msim", "data=%s\n", data->str |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1521 ? data->str : "(NULL)"); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1522 |
|
20982
aee8d876fed1
When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents:
20861
diff
changeset
|
1523 /* url_text is variable=data\n...†*/ |
|
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1524 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1525 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1526 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1527 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1528 error = NULL; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1529 keyfile = g_key_file_new(); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1530 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1531 /* Default list seperator is ;, but currentversion.txt doesn't have |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1532 * these, so set to an unused character to avoid parsing problems. */ |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1533 g_key_file_set_list_separator(keyfile, '\0'); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1534 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1535 g_key_file_load_from_data(keyfile, data->str, data->len, |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1536 G_KEY_FILE_NONE, &error); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1537 g_string_free(data, TRUE); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1538 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1539 if (error != NULL) { |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1540 purple_debug_info("msim_check_newer_version_cb", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1541 "couldn't parse, error: %d %d %s\n", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1542 error->domain, error->code, error->message); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1543 g_error_free(error); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1544 return; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1545 } |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1546 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1547 gchar **ks; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1548 guint n; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1549 ks = g_key_file_get_keys(keyfile, "group", &n, NULL); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1550 purple_debug_info("msim", "n=%d\n", n); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1551 guint i; |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1552 for (i = 0; ks[i] != NULL; ++i) |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1553 { |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1554 purple_debug_info("msim", "%d=%s\n", i, ks[i]); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1555 } |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1556 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1557 newest_filever = g_key_file_get_string(keyfile, "group", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1558 "FILEVER", &error); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1559 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1560 purple_debug_info("msim_check_newer_version_cb", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1561 "newest filever: %s\n", newest_filever ? |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1562 newest_filever : "(NULL)"); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1563 if (error != NULL) { |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1564 purple_debug_info("msim_check_newer_version_cb", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1565 "error: %d %d %s\n", |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1566 error->domain, error->code, error->message); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1567 g_error_free(error); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1568 } |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1569 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1570 g_key_file_free(keyfile); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1571 |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1572 exit(0); |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1573 } |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1574 #endif |
|
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
1575 |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1576 /** Called when the session key arrives to check whether the user |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1577 * has a username, and set one if desired. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1578 static gboolean |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1579 msim_is_username_set(MsimSession *session, MsimMessage *msg) |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1580 { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1581 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1582 g_return_val_if_fail(msg != NULL, FALSE); |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1583 g_return_val_if_fail(session->gc != NULL, FALSE); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1584 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1585 session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1586 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1587 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1588 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1589 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1590 /* Comes with: proof,profileid,userid,uniquenick -- all same values |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1591 * some of the time, but can vary. This is our own user ID. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1592 session->userid = msim_msg_get_integer(msg, "userid"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1593 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
1594 /* Save uid to account so this account can be looked up by uid. */ |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
1595 purple_account_set_int(session->account, "uid", session->userid); |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
1596 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1597 /* Not sure what profileid is used for. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1598 if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1599 msim_unrecognized(session, msg, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1600 "Profile ID didn't match user ID, don't know why"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1601 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1602 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1603 /* We now know are our own username, only after we're logged in.. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1604 * which is weird, but happens because you login with your email |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1605 * address and not username. Will be freed in msim_session_destroy(). */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1606 session->username = msim_msg_get_string(msg, "uniquenick"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1607 |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1608 /* If user lacks a username, help them get one. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1609 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) { |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1610 purple_debug_info("msim_is_username_set", "no username is set\n"); |
|
22302
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1611 purple_request_yes_no(session->gc, |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1612 _("MySpaceIM - No Username Set"), |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1613 _("You appear to have no MySpace username."), |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1614 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"), |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1615 0, |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1616 session->account, |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1617 NULL, |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1618 NULL, |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1619 session->gc, |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1620 G_CALLBACK(msim_set_username_cb), |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1621 G_CALLBACK(msim_do_not_set_username_cb)); |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1622 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n"); |
|
19629
9968fff36e20
If no username is set, point user to a web page where to set it, and disconnect.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19628
diff
changeset
|
1623 return FALSE; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1624 } |
|
22302
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1625 return TRUE; |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1626 } |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1627 |
|
22303
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1628 /** Called after username is set, if necessary and we're open for business. */ |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1629 gboolean msim_we_are_logged_on(MsimSession *session) |
|
1097406c8f6c
In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22302
diff
changeset
|
1630 { |
|
22302
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1631 MsimMessage *body; |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1632 |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1633 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1634 |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1635 /* The session is now set up, ready to be connected. This emits the |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1636 * signedOn signal, so clients can now do anything with msimprpl, and |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1637 * we're ready for it (session key, userid, username all setup). */ |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1638 purple_connection_update_progress(session->gc, _("Connected"), 3, 4); |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1639 purple_connection_set_state(session->gc, PURPLE_CONNECTED); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1640 |
|
22306
7d0e93198c39
If the user sets a username (because they don't have one), and it succeeds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22303
diff
changeset
|
1641 /* Set display name to username (otherwise will show email address) */ |
|
7d0e93198c39
If the user sets a username (because they don't have one), and it succeeds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22303
diff
changeset
|
1642 purple_connection_set_display_name(session->gc, session->username); |
|
7d0e93198c39
If the user sets a username (because they don't have one), and it succeeds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22303
diff
changeset
|
1643 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1644 body = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1645 "UserID", MSIM_TYPE_INTEGER, session->userid, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1646 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1647 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1648 /* Request IM info about ourself. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1649 msim_send(session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1650 "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1651 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1652 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1653 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1654 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1655 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1656 "body", MSIM_TYPE_DICTIONARY, body, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1657 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1658 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1659 /* Request MySpace info about ourself. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1660 msim_send(session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1661 "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1662 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1663 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1664 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1665 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1666 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1667 "body", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1668 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1669 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1670 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1671 /* TODO: set blocklist */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1672 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1673 /* Notify servers of our current status. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1674 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1675 msim_set_status(session->account, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1676 purple_account_get_active_status(session->account)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1677 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1678 /* TODO: setinfo */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1679 /* |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1680 body = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1681 "TotalFriends", MSIM_TYPE_INTEGER, 666, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1682 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1683 msim_send(session, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1684 "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1685 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1686 "info", MSIM_TYPE_DICTIONARY, body, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1687 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1688 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1689 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1690 /* Disable due to problems with timeouts. TODO: fix. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1691 #ifdef MSIM_USE_KEEPALIVE |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1692 purple_timeout_add(MSIM_KEEPALIVE_INTERVAL_CHECK, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1693 (GSourceFunc)msim_check_alive, session); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1694 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1695 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1696 /* Check mail if they want to. */ |
|
19437
a8c9c42c3572
Only check for mail if "New mail notifications" is enabled in account options.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19436
diff
changeset
|
1697 if (purple_account_get_check_mail(session->account)) { |
|
21758
430827922828
Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kevin@simguy.net>
parents:
21709
diff
changeset
|
1698 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, |
|
19437
a8c9c42c3572
Only check for mail if "New mail notifications" is enabled in account options.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19436
diff
changeset
|
1699 (GSourceFunc)msim_check_inbox, session); |
|
a8c9c42c3572
Only check for mail if "New mail notifications" is enabled in account options.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19436
diff
changeset
|
1700 msim_check_inbox(session); |
|
a8c9c42c3572
Only check for mail if "New mail notifications" is enabled in account options.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19436
diff
changeset
|
1701 } |
|
a8c9c42c3572
Only check for mail if "New mail notifications" is enabled in account options.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19436
diff
changeset
|
1702 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
1703 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1704 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1705 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1706 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1707 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1708 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1709 * Process a message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1710 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1711 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1712 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1713 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1714 * @return TRUE if successful. FALSE if processing failed. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1715 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1716 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1717 msim_process(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1718 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1719 g_return_val_if_fail(session != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1720 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1721 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1722 #ifdef MSIM_DEBUG_MSG |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1723 msim_msg_dump("ready to process: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1724 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1725 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1726 if (msim_msg_get_integer(msg, "lc") == 1) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1727 return msim_login_challenge(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1728 } else if (msim_msg_get_integer(msg, "lc") == 2) { |
|
22302
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1729 /* return msim_we_are_logged_on(session, msg); */ |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1730 if (msim_is_username_set(session, msg)) { |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1731 return msim_we_are_logged_on(session); |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1732 } else { |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1733 /* No username is set... We'll wait for the callbacks to do their work */ |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1734 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */ |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1735 return FALSE; |
|
0e2207b46080
In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22292
diff
changeset
|
1736 } |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1737 } else if (msim_msg_get(msg, "bm")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1738 return msim_incoming_bm(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1739 } else if (msim_msg_get(msg, "rid")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1740 return msim_process_reply(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1741 } else if (msim_msg_get(msg, "error")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1742 return msim_error(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1743 } else if (msim_msg_get(msg, "ka")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1744 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1745 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1746 msim_unrecognized(session, msg, "in msim_process"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1747 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1748 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1749 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1750 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1751 /** Process the initial server information from the server. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1752 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1753 msim_process_server_info(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1754 { |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1755 MsimMessage *body; |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1756 |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1757 body = msim_msg_get_dictionary(msg, "body"); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1758 g_return_val_if_fail(body != NULL, FALSE); |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1759 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1760 /* Example body: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1761 AdUnitRefreshInterval=10. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1762 AlertPollInterval=360. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1763 AllowChatRoomEmoticonSharing=False. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1764 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1765 CurClientVersion=673. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1766 EnableIMBrowse=True. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1767 EnableIMStuffAvatars=False. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1768 EnableIMStuffZaps=False. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1769 MaxAddAllFriends=100. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1770 MaxContacts=1000. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1771 MinClientVersion=594. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1772 MySpaceIM_ENGLISH=78744676. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1773 MySpaceNowTimer=720. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1774 PersistenceDataTimeout=900. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1775 UseWebChallenge=1. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1776 WebTicketGoHome=False |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1777 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1778 Anything useful? TODO: use what is useful, and use it. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1779 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1780 purple_debug_info("msim_process_server_info", |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1781 "maximum contacts: %d\n", |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
1782 msim_msg_get_integer(body, "MaxContacts")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1783 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1784 session->server_info = body; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1785 /* session->server_info freed in msim_session_destroy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1786 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1787 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1788 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1789 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1790 /** Process a web challenge, used to login to the web site. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1791 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1792 msim_web_challenge(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1793 { |
| 22156 | 1794 /* TODO: web challenge, store token. #2659. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1795 return FALSE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1796 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1797 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1798 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1799 * Process a persistance message reply from the server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1800 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1801 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1802 * @param msg Message reply from server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1803 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1804 * @return TRUE if successful. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1805 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1806 * msim_lookup_user sets callback for here |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1807 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1808 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1809 msim_process_reply(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1810 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1811 MSIM_USER_LOOKUP_CB cb; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1812 gpointer data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1813 guint rid, cmd, dsn, lid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1814 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1815 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1816 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1817 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1818 msim_store_user_info(session, msg, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1819 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1820 rid = msim_msg_get_integer(msg, "rid"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1821 cmd = msim_msg_get_integer(msg, "cmd"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1822 dsn = msim_msg_get_integer(msg, "dsn"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1823 lid = msim_msg_get_integer(msg, "lid"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1824 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1825 /* Unsolicited messages */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1826 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1827 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1828 return msim_process_server_info(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1829 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1830 return msim_web_challenge(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1831 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1832 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1833 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1834 /* If a callback is registered for this userid lookup, call it. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1835 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1836 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1837 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1838 if (cb) { |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1839 purple_debug_info("msim", "msim_process_reply: calling callback now\n"); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1840 msim_msg_dump("for msg=%s\n", msg); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1841 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1842 cb(session, msim_msg_clone(msg), data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1843 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1844 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1845 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1846 purple_debug_info("msim", |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
1847 "msim_process_reply: no callback for rid %d\n", rid); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1848 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1849 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1850 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1851 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1852 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1853 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1854 * Handle an error from the server. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1855 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1856 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1857 * @param msg The message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1858 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1859 * @return TRUE if successfully reported error. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1860 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1861 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1862 msim_error(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1863 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1864 gchar *errmsg, *full_errmsg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1865 guint err; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1866 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1867 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1868 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1869 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1870 err = msim_msg_get_integer(msg, "err"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1871 errmsg = msim_msg_get_string(msg, "errmsg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1872 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1873 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1874 errmsg ? errmsg : "no 'errmsg' given"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1875 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1876 g_free(errmsg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1877 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1878 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1879 session->sesskey, full_errmsg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1880 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1881 /* Destroy session if fatal. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1882 if (msim_msg_get(msg, "fatal")) { |
| 21358 | 1883 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1884 purple_debug_info("msim", "fatal error, closing\n"); |
| 22156 | 1885 |
|
20590
a2cb2a2fe424
Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20580
diff
changeset
|
1886 switch (err) { |
| 22156 | 1887 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ |
| 21358 | 1888 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
|
20776
f3cfcbbac3d8
propagate from branch 'im.pidgin.pidgin' (head 294731552d0baf5f1f37a45e0c119b2188f34ba8)
Will Thompson <will.thompson@collabora.co.uk>
diff
changeset
|
1889 if (!purple_account_get_remember_password(session->account)) |
|
f3cfcbbac3d8
propagate from branch 'im.pidgin.pidgin' (head 294731552d0baf5f1f37a45e0c119b2188f34ba8)
Will Thompson <will.thompson@collabora.co.uk>
diff
changeset
|
1890 purple_account_set_password(session->account, NULL); |
|
22268
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1891 #ifdef MSIM_MAX_PASSWORD_LENGTH |
|
22478
4900f9b9827f
Verify that session->account->password is not NULL before passing it to strlen()
Evan Schoenberg <evan.s@dreskin.net>
parents:
22306
diff
changeset
|
1892 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) { |
|
22268
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1893 gchar *suggestion; |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1894 |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1895 suggestion = g_strdup_printf(_("%s Your password is " |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1896 "%d characters, greater than the " |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1897 "expected maximum length of %d for " |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1898 "MySpaceIM. Please shorten your " |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1899 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."), |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1900 full_errmsg, (int) |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1901 strlen(session->account->password), |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1902 MSIM_MAX_PASSWORD_LENGTH); |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1903 |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1904 /* Replace full_errmsg. */ |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1905 g_free(full_errmsg); |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1906 full_errmsg = suggestion; |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1907 } |
|
1f3481447197
In msimprpl, if login fails, and the user's password is greater than
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22264
diff
changeset
|
1908 #endif |
|
20776
f3cfcbbac3d8
propagate from branch 'im.pidgin.pidgin' (head 294731552d0baf5f1f37a45e0c119b2188f34ba8)
Will Thompson <will.thompson@collabora.co.uk>
diff
changeset
|
1909 break; |
| 22156 | 1910 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ |
| 21358 | 1911 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; |
|
20590
a2cb2a2fe424
Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20580
diff
changeset
|
1912 if (!purple_account_get_remember_password(session->account)) |
|
a2cb2a2fe424
Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20580
diff
changeset
|
1913 purple_account_set_password(session->account, NULL); |
|
a2cb2a2fe424
Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20580
diff
changeset
|
1914 break; |
|
19638
5ee8869b5130
Ka-Hing reminded me that we should set the password to NULL when
Mark Doliner <mark@kingant.net>
parents:
19637
diff
changeset
|
1915 } |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
1916 purple_connection_error_reason (session->gc, reason, full_errmsg); |
| 19637 | 1917 } else { |
|
20753
61045691aa72
Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20685
diff
changeset
|
1918 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1919 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1920 |
| 19637 | 1921 g_free(full_errmsg); |
| 1922 | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1923 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1924 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1925 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1926 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1927 * Process incoming status messages. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1928 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1929 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1930 * @param msg Status update message. Caller frees. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1931 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1932 * @return TRUE if successful. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1933 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1934 static gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1935 msim_incoming_status(MsimSession *session, MsimMessage *msg) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1936 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1937 PurpleBuddyList *blist; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1938 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1939 GList *list; |
|
19592
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
1940 gchar *status_headline, *status_headline_escaped; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1941 gint status_code, purple_status_code; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1942 gchar *username; |
| 22156 | 1943 gchar *unrecognized_msg; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1944 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1945 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1946 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1947 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1948 msim_msg_dump("msim_status msg=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1949 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1950 /* Helpfully looked up by msim_incoming_resolve() for us. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1951 username = msim_msg_get_string(msg, "_username"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1952 g_return_val_if_fail(username != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1953 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1954 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1955 gchar *ss; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1956 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1957 ss = msim_msg_get_string(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1958 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1959 "msim_status: updating status for <%s> to <%s>\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1960 username, ss ? ss : "(NULL)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1961 g_free(ss); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1962 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1963 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1964 /* Example fields: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1965 * |s|0|ss|Offline |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1966 * |s|1|ss|:-)|ls||ip|0|p|0 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1967 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1968 list = msim_msg_get_list(msg, "msg"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1969 |
|
19431
3b7539c7402e
Now that MsimMessageElement's are more accessible outside message.c,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19430
diff
changeset
|
1970 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE)); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1971 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code); |
|
19431
3b7539c7402e
Now that MsimMessageElement's are more accessible outside message.c,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19430
diff
changeset
|
1972 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE)); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1973 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1974 blist = purple_get_blist(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1975 |
| 22156 | 1976 /* Add buddy if not found. |
| 1977 * TODO: Could this be responsible for #3444? */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1978 user = msim_find_user(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1979 if (!user) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1980 PurpleBuddy *buddy; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1981 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1982 purple_debug_info("msim", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1983 "msim_status: making new buddy for %s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1984 buddy = purple_buddy_new(session->account, username, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1985 purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1986 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1987 user = msim_get_user_from_buddy(buddy); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1988 |
| 22156 | 1989 /* All buddies on list should have a UserID integer associated with them. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1990 purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1991 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1992 msim_store_user_info(session, msg, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1993 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1994 purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1995 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
1996 |
|
21707
9ef51d894456
This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kevin@simguy.net>
parents:
21418
diff
changeset
|
1997 if (status_headline && strcmp(status_headline, "") != 0) { |
|
19628
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
1998 /* The status headline is plaintext, but libpurple treats it as HTML, |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
1999 * so escape any HTML characters to their entity equivalents. */ |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
2000 status_headline_escaped = g_markup_escape_text(status_headline, strlen(status_headline)); |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
2001 } else { |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
2002 status_headline_escaped = NULL; |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
2003 } |
|
4c5e7db85e29
For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19627
diff
changeset
|
2004 |
|
19592
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2005 g_free(status_headline); |
|
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2006 |
|
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2007 if (user->headline) |
|
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2008 g_free(user->headline); |
|
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2009 |
|
19431
3b7539c7402e
Now that MsimMessageElement's are more accessible outside message.c,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19430
diff
changeset
|
2010 /* don't copy; let the MsimUser own the headline, memory-wise */ |
|
19592
d6802883e96e
Treat status messages as the plaintext that they are.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19570
diff
changeset
|
2011 user->headline = status_headline_escaped; |
| 22160 | 2012 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2013 /* Set user status */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2014 switch (status_code) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2015 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2016 purple_status_code = PURPLE_STATUS_OFFLINE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2017 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2018 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2019 case MSIM_STATUS_CODE_ONLINE: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2020 purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2021 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2022 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2023 case MSIM_STATUS_CODE_AWAY: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2024 purple_status_code = PURPLE_STATUS_AWAY; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2025 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2026 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2027 case MSIM_STATUS_CODE_IDLE: |
|
21759
41489d141def
This makes myspace treat idle as an available status, which avoids idle
Kevin Stange <kevin@simguy.net>
parents:
21758
diff
changeset
|
2028 /* Treat idle as an available status. */ |
|
41489d141def
This makes myspace treat idle as an available status, which avoids idle
Kevin Stange <kevin@simguy.net>
parents:
21758
diff
changeset
|
2029 purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2030 break; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2031 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2032 default: |
| 22156 | 2033 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2034 username, status_code); |
|
19429
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2035 purple_status_code = PURPLE_STATUS_AVAILABLE; |
| 22156 | 2036 |
| 2037 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", | |
| 2038 status_code); | |
| 2039 msim_unrecognized(session, NULL, unrecognized_msg); | |
| 2040 g_free(unrecognized_msg); | |
| 2041 | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2042 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2043 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2044 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2045 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2046 if (status_code == MSIM_STATUS_CODE_IDLE) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2047 purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2048 purple_prpl_got_user_idle(session->account, username, TRUE, time(NULL)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2049 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2050 /* All other statuses indicate going back to non-idle. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2051 purple_prpl_got_user_idle(session->account, username, FALSE, time(NULL)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2052 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2053 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2054 #ifdef MSIM_SEND_CLIENT_VERSION |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2055 if (status_code == MSIM_STATUS_CODE_ONLINE) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2056 /* Secretly whisper to unofficial clients our own version as they come online */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2057 msim_send_unofficial_client(session, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2058 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2059 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2060 |
|
19429
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2061 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) { |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2062 /* Get information when they come online. |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2063 * TODO: periodically refresh? |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2064 */ |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2065 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username); |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2066 msim_lookup_user(session, username, NULL, NULL); |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2067 } |
|
5e2a2fc55631
Lookup a user's information when their status changes to anything but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19428
diff
changeset
|
2068 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2069 g_free(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2070 msim_msg_list_free(list); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2071 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2072 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2073 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2074 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2075 /** Add a buddy to user's buddy list. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2076 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2077 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2078 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2079 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2080 MsimMessage *msg; |
|
19597
1b22d4c6fe47
Add uid field to add buddy persistance request. Now adding buddies to the
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19594
diff
changeset
|
2081 MsimMessage *msg_persist; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2082 MsimMessage *body; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2083 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2084 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2085 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2086 buddy->name, (group && group->name) ? group->name : "(no group)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2087 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2088 msg = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2089 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2090 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2091 /* "newprofileid" will be inserted here with uid. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2092 "reason", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2093 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2094 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2095 if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2096 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed.")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2097 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2098 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2099 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2100 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2101 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2102 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2103 * buddy list since Purple adds it locally. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2104 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2105 body = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2106 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2107 "GroupName", MSIM_TYPE_STRING, g_strdup(group->name), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2108 "Position", MSIM_TYPE_INTEGER, 1000, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2109 "Visibility", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2110 "NickName", MSIM_TYPE_STRING, g_strdup(""), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2111 "NameSelect", MSIM_TYPE_INTEGER, 0, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2112 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2113 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2114 /* TODO: Update blocklist. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2115 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2116 msg_persist = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2117 "persist", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2118 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2119 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2120 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN, |
|
19597
1b22d4c6fe47
Add uid field to add buddy persistance request. Now adding buddies to the
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19594
diff
changeset
|
2121 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2122 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2123 /* TODO: Use msim_new_reply_callback to get rid. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2124 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2125 "body", MSIM_TYPE_DICTIONARY, body, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2126 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2127 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2128 if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL)) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2129 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2130 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2131 msim_msg_free(msg_persist); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2132 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2133 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2134 msim_msg_free(msg_persist); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2135 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2136 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2137 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2138 /** Perform actual postprocessing on a message, adding userid as specified. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2139 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2140 * @param msg The message to postprocess. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2141 * @param uid_before Name of field where to insert new field before, or NULL for end. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2142 * @param uid_field_name Name of field to add uid to. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2143 * @param uid The userid to insert. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2144 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2145 * If the field named by uid_field_name already exists, then its string contents will |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2146 * be used for the field, except "<uid>" will be replaced by the userid. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2147 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2148 * If the field named by uid_field_name does not exist, it will be added before the |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2149 * field named by uid_before, as an integer, with the userid. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2150 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2151 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing(). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2152 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2153 static MsimMessage * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2154 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2155 const gchar *uid_field_name, guint uid) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2156 { |
|
20861
9c2ec10933b2
Fix CID 342 (which wasn't wrong, but was inefficient and confusing.)
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20753
diff
changeset
|
2157 MsimMessageElement *elem; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2158 msim_msg_dump("msim_do_postprocessing msg: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2159 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2160 /* First, check - if the field already exists, replace <uid> within it */ |
|
20861
9c2ec10933b2
Fix CID 342 (which wasn't wrong, but was inefficient and confusing.)
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20753
diff
changeset
|
2161 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2162 gchar *fmt_string; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2163 gchar *uid_str, *new_str; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2164 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2165 /* Get the packed element, flattening it. This allows <uid> to be |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2166 * replaced within nested data structures, since the replacement is done |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2167 * on the linear, packed data, not on a complicated data structure. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2168 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2169 * For example, if the field was originally a dictionary or a list, you |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2170 * would have to iterate over all the items in it to see what needs to |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2171 * be replaced. But by packing it first, the <uid> marker is easily replaced |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2172 * just by a string replacement. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2173 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2174 fmt_string = msim_msg_pack_element_data(elem); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2175 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2176 uid_str = g_strdup_printf("%d", uid); |
|
19466
11c727b19201
Replace homegrown str_replace() with purple_strreplace(), after discovering it.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19462
diff
changeset
|
2177 new_str = purple_strreplace(fmt_string, "<uid>", uid_str); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2178 g_free(uid_str); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2179 g_free(fmt_string); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2180 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2181 /* Free the old element data */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2182 msim_msg_free_element_data(elem->data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2183 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2184 /* Replace it with our new data */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2185 elem->data = new_str; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2186 elem->type = MSIM_TYPE_RAW; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2187 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2188 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2189 /* Otherwise, insert new field into outgoing message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2190 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2191 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2192 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2193 msim_msg_dump("msim_postprocess_outgoing_cb: postprocessed msg=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2194 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2195 return msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2196 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2197 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2198 /** Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2199 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2200 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2201 * @param userinfo The user information reply message, containing the user ID |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2202 * @param data The message to postprocess and send. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2203 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2204 * The data message should contain these fields: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2205 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2206 * _uid_field_name: string, name of field to add with userid from userinfo message |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2207 * _uid_before: string, name of field before field to insert, or NULL for end |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2208 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2209 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2210 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2211 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2212 msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2213 gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2214 { |
|
19350
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2215 gchar *uid_field_name, *uid_before, *username; |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2216 guint uid; |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2217 MsimMessage *msg, *body; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2218 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2219 msg = (MsimMessage *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2220 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2221 msim_msg_dump("msim_postprocess_outgoing_cb() got msg=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2222 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2223 /* Obtain userid from userinfo message. */ |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2224 body = msim_msg_get_dictionary(userinfo, "body"); |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2225 g_return_if_fail(body != NULL); |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2226 |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2227 uid = msim_msg_get_integer(body, "UserID"); |
|
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2228 msim_msg_free(body); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2229 |
|
19350
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2230 username = msim_msg_get_string(msg, "_username"); |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2231 |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2232 if (!uid) { |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2233 gchar *msg; |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2234 |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2235 msg = g_strdup_printf(_("No such user: %s"), username); |
| 22160 | 2236 if (!purple_conv_present_error(username, session->account, msg)) { |
| 2237 purple_notify_error(NULL, NULL, _("User lookup"), msg); | |
| 2238 } | |
| 22157 | 2239 |
|
19350
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2240 g_free(msg); |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2241 g_free(username); |
| 22156 | 2242 /* TODO: free |
| 2243 * msim_msg_free(msg); | |
| 2244 */ | |
|
19350
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2245 return; |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2246 } |
|
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2247 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2248 uid_field_name = msim_msg_get_string(msg, "_uid_field_name"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2249 uid_before = msim_msg_get_string(msg, "_uid_before"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2250 |
|
19251
78558930d9f3
Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19249
diff
changeset
|
2251 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2252 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2253 /* Send */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2254 if (!msim_msg_send(session, msg)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2255 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2256 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2257 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2258 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2259 /* Free field names AFTER sending message, because MsimMessage does NOT copy |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2260 * field names - instead, treats them as static strings (which they usually are). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2261 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2262 g_free(uid_field_name); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2263 g_free(uid_before); |
|
19350
8839775bad3e
If a username cannot be looked up in postprocessing, throw up an error.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19256
diff
changeset
|
2264 g_free(username); |
| 22156 | 2265 /* TODO: free |
| 2266 * msim_msg_free(msg); | |
| 2267 */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2268 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2269 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2270 /** Postprocess and send a message. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2271 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2272 * @param session |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2273 * @param msg Message to postprocess. Will NOT be freed. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2274 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2275 * @param uid_field_name Name of new field to add, containing uid of username. Static string. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2276 * @param uid_before Name of existing field to insert username field before. Static string. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2277 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2278 * @return TRUE if successful. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2279 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2280 gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2281 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2282 const gchar *username, const gchar *uid_field_name, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2283 const gchar *uid_before) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2284 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2285 PurpleBuddy *buddy; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2286 guint uid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2287 gboolean rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2288 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2289 g_return_val_if_fail(msg != NULL, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2290 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2291 /* Store information for msim_postprocess_outgoing_cb(). */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2292 msim_msg_dump("msim_postprocess_outgoing: msg before=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2293 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2294 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2295 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2296 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2297 /* First, try the most obvious. If numeric userid is given, use that directly. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2298 if (msim_is_userid(username)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2299 uid = atol(username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2300 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2301 /* Next, see if on buddy list and know uid. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2302 buddy = purple_find_buddy(session->account, username); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2303 if (buddy) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2304 uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2305 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2306 uid = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2307 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2308 |
| 22156 | 2309 if (!buddy || !uid) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2310 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2311 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2312 username ? username : "(NULL)"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2313 msim_msg_dump("msim_postprocess_outgoing - scheduling lookup, msg=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2314 /* TODO: where is cloned message freed? Should be in _cb. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2315 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2316 return TRUE; /* not sure of status yet - haven't sent! */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2317 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2318 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2319 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2320 /* Already have uid, postprocess and send msg immediately. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2321 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2322 username ? username : "(NULL)", uid); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2323 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2324 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2325 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2326 msim_msg_dump("msim_postprocess_outgoing: msg after (uid immediate)=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2327 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2328 rc = msim_msg_send(session, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2329 |
| 22156 | 2330 /* TODO: free |
| 2331 * msim_msg_free(msg); | |
| 2332 */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2333 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2334 return rc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2335 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2336 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2337 /** Remove a buddy from the user's buddy list. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2338 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2339 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2340 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2341 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2342 MsimMessage *delbuddy_msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2343 MsimMessage *persist_msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2344 MsimMessage *blocklist_msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2345 GList *blocklist_updates; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2346 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2347 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2348 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2349 delbuddy_msg = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2350 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2351 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2352 /* 'delprofileid' with uid will be inserted here. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2353 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2354 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2355 if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2356 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2357 msim_msg_free(delbuddy_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2358 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2359 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2360 msim_msg_free(delbuddy_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2361 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2362 persist_msg = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2363 "persist", MSIM_TYPE_INTEGER, 1, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2364 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2365 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2366 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2367 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2368 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2369 "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2370 /* <uid> will be replaced by postprocessing */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2371 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2372 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2373 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2374 if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2375 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2376 msim_msg_free(persist_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2377 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2378 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2379 msim_msg_free(persist_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2380 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2381 blocklist_updates = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2382 blocklist_updates = g_list_prepend(blocklist_updates, "a-"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2383 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2384 blocklist_updates = g_list_prepend(blocklist_updates, "b-"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2385 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2386 blocklist_updates = g_list_reverse(blocklist_updates); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2387 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2388 blocklist_msg = msim_msg_new( |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2389 "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2390 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2391 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */ |
| 22156 | 2392 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2393 "idlist", MSIM_TYPE_LIST, blocklist_updates, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2394 NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2395 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2396 if (!msim_postprocess_outgoing(session, blocklist_msg, buddy->name, "idlist", NULL)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2397 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2398 msim_msg_free(blocklist_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2399 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2400 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2401 msim_msg_free(blocklist_msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2402 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2403 |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2404 /** |
| 22156 | 2405 * Returns a string of a username in canonical form. Basically removes all the |
| 2406 * spaces, lowercases the string, and looks up user IDs to usernames. | |
| 2407 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. | |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2408 * |
| 22156 | 2409 * Borrowed this code from oscar_normalize. Added checking for |
| 2410 * "if userid, get name before normalizing" | |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2411 */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2412 const char *msim_normalize(const PurpleAccount *account, const char *str) { |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2413 static char normalized[BUF_LEN]; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2414 char *tmp1, *tmp2; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2415 int i, j; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2416 guint id; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2417 |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2418 g_return_val_if_fail(str != NULL, NULL); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2419 |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2420 if (msim_is_userid(str)) { |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2421 /* Have user ID, we need to get their username first :) */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2422 const char *username; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2423 |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2424 /* If the account does not exist, we can't look up the user. */ |
|
23319
5b8239453a1e
Apply patch to fix #4937 'msim_normalize() error during initialization of libpurple' from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
23180
diff
changeset
|
2425 if (!account || !account->gc) |
| 22160 | 2426 return str; |
| 22159 | 2427 |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2428 id = atol(str); |
| 22160 | 2429 username = msim_uid2username_from_blist((PurpleAccount *)account, id); |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2430 if (!username) { |
| 22156 | 2431 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2432 /* Note: manual lookup using msim_lookup_user() is a problem inside |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2433 * msim_normalize(), because msim_lookup_user() calls a callback function |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2434 * when the user information has been looked up, but msim_normalize() expects |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2435 * the result immediately. */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2436 strncpy(normalized, str, BUF_LEN); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2437 } else { |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2438 strncpy(normalized, username, BUF_LEN); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2439 } |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2440 } else { |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2441 /* Have username. */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2442 strncpy(normalized, str, BUF_LEN); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2443 } |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2444 |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2445 /* Strip spaces. */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2446 for (i=0, j=0; normalized[j]; i++, j++) { |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2447 while (normalized[j] == ' ') |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2448 j++; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2449 normalized[i] = normalized[j]; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2450 } |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2451 normalized[i] = '\0'; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2452 |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2453 /* Lowercase and perform UTF-8 normalization. */ |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2454 tmp1 = g_utf8_strdown(normalized, -1); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2455 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2456 g_snprintf(normalized, sizeof(normalized), "%s", tmp2); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2457 g_free(tmp2); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2458 g_free(tmp1); |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2459 |
| 22156 | 2460 /* TODO: re-add caps and spacing back to what the user wanted. |
| 2461 * User can format their own names, for example 'msimprpl' is shown | |
| 2462 * as 'MsIm PrPl' in the official client. | |
| 2463 * | |
| 2464 * TODO: file a ticket to add this enhancement. | |
| 2465 */ | |
| 2466 | |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2467 return normalized; |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2468 } |
|
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
2469 |
|
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
|
2470 static GHashTable * |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2471 msim_get_account_text_table(PurpleAccount *unused) |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2472 { |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2473 GHashTable *table; |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2474 |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2475 table = g_hash_table_new(g_str_hash, g_str_equal); |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2476 |
|
23180
e0bcb8cfda74
Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents:
23159
diff
changeset
|
2477 g_hash_table_insert(table, "login_label", (gpointer)_("Email Address...")); |
|
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
|
2478 |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2479 return table; |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2480 } |
|
bb41bdce8981
Patch from Jaywalker to let prpls add some helpful text for some account
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23109
diff
changeset
|
2481 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2482 /** Return whether the buddy can be messaged while offline. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2483 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2484 * The protocol supports offline messages in just the same way as online |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2485 * messages. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2486 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2487 gboolean |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2488 msim_offline_message(const PurpleBuddy *buddy) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2489 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2490 return TRUE; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2491 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2492 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2493 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2494 * Callback when input available. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2495 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2496 * @param gc_uncasted A PurpleConnection pointer. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2497 * @param source File descriptor. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2498 * @param cond PURPLE_INPUT_READ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2499 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2500 * Reads the input, and calls msim_preprocess_incoming() to handle it. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2501 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2502 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2503 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2504 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2505 PurpleConnection *gc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2506 PurpleAccount *account; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2507 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2508 gchar *end; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2509 int n; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2510 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2511 g_return_if_fail(gc_uncasted != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2512 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2513 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2514 gc = (PurpleConnection *)(gc_uncasted); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2515 account = purple_connection_get_account(gc); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2516 session = gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2517 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2518 /* libpurple/eventloop.h only defines these two */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2519 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2520 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
| 21358 | 2521 purple_connection_error_reason (gc, |
| 2522 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2523 _("Invalid input condition")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2524 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2525 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2526 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2527 g_return_if_fail(cond == PURPLE_INPUT_READ); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2528 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2529 |
| 22156 | 2530 /* Mark down that we got data, so we don't timeout. */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2531 session->last_comm = time(NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2532 |
| 22162 | 2533 /* If approaching end of buffer, reallocate some more memory. */ |
| 2534 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) { | |
| 2535 purple_debug_info("msim", | |
| 2536 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n", | |
| 2537 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE); | |
| 2538 session->rxsize += MSIM_READ_BUF_SIZE; | |
| 2539 session->rxbuf = g_realloc(session->rxbuf, session->rxsize); | |
| 2540 | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2541 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2542 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2543 |
| 22162 | 2544 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n", |
| 2545 session->rxoff, session->rxsize, | |
| 2546 MSIM_READ_BUF_SIZE - session->rxoff - 1); | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2547 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2548 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2549 * the file descriptor, but it sometimes differs from the 'source' parameter. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2550 */ |
| 22162 | 2551 n = recv(session->fd, |
| 2552 session->rxbuf + session->rxoff, | |
| 2553 session->rxsize - session->rxoff - 1, 0); | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2554 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2555 if (n < 0 && errno == EAGAIN) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2556 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2557 } else if (n < 0) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2558 purple_debug_error("msim", "msim_input_cb: read error, ret=%d, " |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2559 "error=%s, source=%d, fd=%d (%X))\n", |
|
21121
35b4f1dc4c8d
replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents:
21000
diff
changeset
|
2560 n, g_strerror(errno), source, session->fd, session->fd); |
| 21358 | 2561 purple_connection_error_reason (gc, |
| 2562 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2563 _("Read error")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2564 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2565 } else if (n == 0) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2566 purple_debug_info("msim", "msim_input_cb: server disconnected\n"); |
| 21358 | 2567 purple_connection_error_reason (gc, |
| 2568 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2569 _("Server has disconnected")); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2570 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2571 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2572 |
| 22162 | 2573 if (n + session->rxoff > session->rxsize) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2574 purple_debug_info("msim_input_cb", "received %d bytes, pushing rxoff to %d, over buffer size of %d\n", |
| 22162 | 2575 n, n + session->rxoff, session->rxsize); |
| 21358 | 2576 purple_connection_error_reason (gc, |
| 2577 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
| 22162 | 2578 _("Read buffer full (2)")); |
| 2579 return; | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2580 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2581 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2582 /* Null terminate */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2583 purple_debug_info("msim", "msim_input_cb: going to null terminate " |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2584 "at n=%d\n", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2585 session->rxbuf[session->rxoff + n] = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2586 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2587 #ifdef MSIM_CHECK_EMBEDDED_NULLS |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2588 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2589 if (strlen(session->rxbuf + session->rxoff) != n) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2590 /* Occurs after login, but it is not a null byte. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2591 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes" |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2592 "--null byte encountered?\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2593 strlen(session->rxbuf + session->rxoff), n); |
| 21358 | 2594 /*purple_connection_error_reason (gc, |
| 2595 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2596 "Invalid message - null byte on input"); */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2597 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2598 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2599 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2600 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2601 session->rxoff += n; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2602 purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2603 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2604 #ifdef MSIM_DEBUG_RXBUF |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2605 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2606 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2607 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2608 /* Look for \\final\\ end markers. If found, process message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2609 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2610 MsimMessage *msg; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2611 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2612 #ifdef MSIM_DEBUG_RXBUF |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2613 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2614 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2615 *end = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2616 msg = msim_parse(g_strdup(session->rxbuf)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2617 if (!msg) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2618 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
| 21358 | 2619 purple_connection_error_reason (gc, |
| 2620 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2621 _("Unparseable message")); |
| 22162 | 2622 break; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2623 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2624 /* Process message and then free it (processing function should |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2625 * clone message if it wants to keep it afterwards.) */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2626 if (!msim_preprocess_incoming(session, msg)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2627 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2628 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2629 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2630 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2631 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2632 /* Move remaining part of buffer to beginning. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2633 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2634 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), |
| 22162 | 2635 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2636 |
| 22156 | 2637 /* Clear end of buffer |
| 2638 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); | |
| 2639 */ | |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2640 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2641 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2642 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2643 /* Setup a callback, to be called when a reply is received with the returned rid. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2644 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2645 * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2646 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2647 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2648 * @return The request/reply ID, used to link replies with requests, or -1. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2649 * Put the rid in your request, 'rid' field. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2650 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2651 * TODO: Make more generic and more specific: |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2652 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2653 * 2) data - make it an MsimMessage? |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2654 */ |
|
19435
bddc6a6fddf0
In msimprpl, move user-related code to a new user module, and move other
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19434
diff
changeset
|
2655 guint |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2656 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2657 gpointer data) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2658 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2659 guint rid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2660 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2661 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2662 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2663 rid = session->next_rid++; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2664 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2665 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2666 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2667 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2668 return rid; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2669 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2670 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2671 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2672 * Callback when connected. Sets up input handlers. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2673 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2674 * @param data A PurpleConnection pointer. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2675 * @param source File descriptor. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2676 * @param error_message |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2677 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2678 static void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2679 msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2680 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2681 PurpleConnection *gc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2682 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2683 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2684 g_return_if_fail(data != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2685 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2686 gc = (PurpleConnection *)data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2687 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2688 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2689 if (source < 0) { |
| 21358 | 2690 purple_connection_error_reason (gc, |
| 2691 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
|
20121
e4bcdd9622c2
purple_connection_error_reason-ify myspace
Will Thompson <will.thompson@collabora.co.uk>
parents:
20057
diff
changeset
|
2692 g_strdup_printf(_("Couldn't connect to host: %s (%d)"), |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2693 error_message ? error_message : "no message given", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2694 source)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2695 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2696 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2697 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2698 session->fd = source; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2699 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2700 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2701 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2702 |
|
19433
9a1b28a10c95
In msimprpl, move session-related functions to a new session module.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19432
diff
changeset
|
2703 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2704 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2705 * Close the connection. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2706 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2707 * @param gc The connection. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2708 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2709 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2710 msim_close(PurpleConnection *gc) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2711 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2712 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2713 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2714 if (gc == NULL) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2715 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2716 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2717 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2718 session = (MsimSession *)gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2719 if (session == NULL) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2720 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2721 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2722 gc->proto_data = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2723 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2724 if (!MSIM_SESSION_VALID(session)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2725 return; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2726 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2727 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2728 if (session->gc->inpa) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2729 purple_input_remove(session->gc->inpa); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2730 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2731 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2732 msim_session_destroy(session); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2733 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2734 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2735 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2736 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2737 * Obtain the status text for a buddy. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2738 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2739 * @param buddy The buddy to obtain status text for. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2740 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2741 * @return Status text, or NULL if error. Caller g_free()'s. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2742 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2743 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2744 char * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2745 msim_status_text(PurpleBuddy *buddy) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2746 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2747 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2748 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2749 const gchar *display_name, *headline; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2750 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2751 g_return_val_if_fail(buddy != NULL, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2752 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2753 user = msim_get_user_from_buddy(buddy); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2754 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2755 session = (MsimSession *)buddy->account->gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2756 g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2757 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2758 display_name = headline = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2759 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2760 /* Retrieve display name and/or headline, depending on user preference. */ |
|
20996
ec3736fe2e4e
There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kevin@simguy.net>
parents:
20982
diff
changeset
|
2761 if (purple_account_get_bool(session->account, "show_headline", TRUE)) { |
|
ec3736fe2e4e
There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kevin@simguy.net>
parents:
20982
diff
changeset
|
2762 headline = user->headline; |
|
ec3736fe2e4e
There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kevin@simguy.net>
parents:
20982
diff
changeset
|
2763 } |
|
ec3736fe2e4e
There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kevin@simguy.net>
parents:
20982
diff
changeset
|
2764 |
|
ec3736fe2e4e
There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kevin@simguy.net>
parents:
20982
diff
changeset
|
2765 if (purple_account_get_bool(session->account, "show_display_name", FALSE)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2766 display_name = user->display_name; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2767 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2768 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2769 /* Return appropriate combination of display name and/or headline, or neither. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2770 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2771 if (display_name && headline) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2772 return g_strconcat(display_name, " ", headline, NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2773 } else if (display_name) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2774 return g_strdup(display_name); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2775 } else if (headline) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2776 return g_strdup(headline); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2777 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2778 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2779 return NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2780 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2781 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2782 /** |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2783 * Obtain the tooltip text for a buddy. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2784 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2785 * @param buddy Buddy to obtain tooltip text on. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2786 * @param user_info Variable modified to have the tooltip text. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2787 * @param full TRUE if should obtain full tooltip text. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2788 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2789 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2790 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2791 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2792 gboolean full) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2793 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2794 MsimUser *user; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2795 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2796 g_return_if_fail(buddy != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2797 g_return_if_fail(user_info != NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2798 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2799 user = msim_get_user_from_buddy(buddy); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2800 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2801 if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2802 MsimSession *session; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2803 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2804 session = (MsimSession *)buddy->account->gc->proto_data; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2805 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2806 g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2807 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2808 /* TODO: if (full), do something different? */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2809 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2810 /* TODO: request information? have to figure out how to do |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2811 * the asynchronous lookup like oscar does (tooltip shows |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2812 * 'retrieving...' if not yet available, then changes when it is). |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2813 * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2814 * Right now, only show what we have on hand. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2815 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2816 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2817 /* Show abbreviated user info. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2818 msim_append_user_info(session, user_info, user, FALSE); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2819 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2820 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
2821 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2822 /** Add contact from server to buddy list, after looking up username. |
|
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
|
2823 * Callback from msim_add_contact_from_server(). |
|
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
2824 * |
|
34a1957de14b
Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19255
diff
changeset
|
2825 * @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
|
2826 */ |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2827 static void |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2828 msim_add_contact_from_server_cb(MsimSession *session, MsimMessage *user_lookup_info, gpointer data) |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2829 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2830 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
|
2831 PurpleGroup *group; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2832 PurpleBuddy *buddy; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2833 MsimUser *user; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2834 gchar *username, *group_name; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2835 guint uid; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2836 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2837 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
|
2838 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
|
2839 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
|
2840 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2841 if (!user_lookup_info) { |
| 22159 | 2842 username = g_strdup(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
|
2843 g_return_if_fail(username != NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2844 } else { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2845 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
|
2846 username = msim_msg_get_string(user_lookup_info_body, "UserName"); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2847 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
|
2848 g_return_if_fail(username != NULL); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2849 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2850 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2851 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
|
2852 "*** 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
|
2853 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2854 /* 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
|
2855 * the documentation claims). */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2856 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
|
2857 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
|
2858 g_free(group_name); |
|
22980
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
2859 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
|
2860 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
|
2861 } |
|
22980
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
2862 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
|
2863 if (!group) { |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
2864 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
|
2865 /* 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
|
2866 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
|
2867 } |
|
77fc073e5a0b
Make MySpace group handling more consistent. References #3378.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22607
diff
changeset
|
2868 g_free(group_name); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2869 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2870 /* 2. Get or create buddy */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2871 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
|
2872 if (!buddy) { |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2873 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
|
2874 "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
|
2875 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
|
2876 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2877 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2878 /* 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
|
2879 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
|
2880 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2881 /* 3. Update buddy information */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2882 user = msim_get_user_from_buddy(buddy); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2883 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2884 /* All buddies on list should have 'uid' integer associated with them. */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2885 purple_blist_node_set_int(&buddy->node, "UserID", uid); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2886 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2887 /* 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
|
2888 * AvatarURL, Headline, ContactID. */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2889 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
|
2890 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2891 /* 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
|
2892 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
|
2893 |
|
9f95357c21b9
In msim_uid2username_from_blist(), return a static string as the documentation
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
22225
diff
changeset
|
2894 g_free(username); |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2895 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2896 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2897 /** Add first ContactID in contact_info to buddy's list. Used to add |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2898 * server-side buddies to client-side list. |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2899 * |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2900 * @return TRUE if added. |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2901 * */ |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2902 static gboolean |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2903 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
|
2904 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2905 guint uid; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2906 const gchar *username; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2907 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2908 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
|
2909 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
|
2910 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2911 /* Lookup the username, since NickName and IMName is unreliable */ |
| 22159 | 2912 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
|
2913 if (!username) { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2914 gchar *uid_str; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2915 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2916 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
|
2917 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
|
2918 "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
|
2919 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
|
2920 g_free(uid_str); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2921 } 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
|
2922 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
|
2923 } |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2924 |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2925 /* 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
|
2926 * their username. */ |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2927 return TRUE; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2928 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2929 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2930 /** Called when contact list is received from server. */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2931 static void |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2932 msim_got_contact_list(MsimSession *session, MsimMessage *reply, gpointer user_data) |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2933 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2934 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
|
2935 gchar *msg; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2936 guint buddy_count; |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2937 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2938 msim_msg_dump("msim_got_contact_list: reply=%s", reply); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2939 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2940 body = msim_msg_get_dictionary(reply, "body"); |
| 22160 | 2941 if (!body) { |
| 2942 /* No friends. Not an error. */ | |
| 2943 return; | |
| 2944 } | |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2945 |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2946 buddy_count = 0; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2947 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2948 for (body_node = body; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2949 body_node != NULL; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2950 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
|
2951 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2952 MsimMessageElement *elem; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2953 |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2954 elem = (MsimMessageElement *)body_node->data; |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2955 |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
2956 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
|
2957 { |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2958 /* 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
|
2959 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
|
2960 ++buddy_count; |
|
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2961 } |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2962 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2963 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2964 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2965 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
|
2966 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
|
2967 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
|
2968 "%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
|
2969 buddy_count), |
|
19ab21882b38
"This patch pluralizes a few strings that should be pluralized for
Laurynas Biveinis <laurynas.biveinis@gmail.com>
parents:
23319
diff
changeset
|
2970 buddy_count); |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2971 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
|
2972 g_free(msg); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2973 break; |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2974 |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2975 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
|
2976 /* TODO */ |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2977 break; |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2978 |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2979 case MSIM_CONTACT_LIST_INITIAL_FRIENDS: |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2980 /* Nothing */ |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2981 break; |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2982 } |
|
19354
b22a33d3fc95
Improve buddy importing. Count number of buddies being added, and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19353
diff
changeset
|
2983 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2984 msim_msg_free(body); |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2985 } |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
2986 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2987 /* Get contact list, calling msim_got_contact_list() with what_to_do_after as user_data gpointer. */ |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2988 static gboolean |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2989 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
|
2990 { |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2991 return msim_send(session, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2992 "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
|
2993 "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
|
2994 "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
|
2995 "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
|
2996 "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
|
2997 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2998 "rid", MSIM_TYPE_INTEGER, |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
2999 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(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
|
3000 "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
|
3001 NULL); |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
3002 } |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
3003 |
|
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
3004 |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
3005 /** Called when friends have been imported to buddy list on server. */ |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
3006 static void |
|
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
3007 msim_import_friends_cb(MsimSession *session, MsimMessage *reply, gpointer user_data) |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3008 { |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3009 MsimMessage *body; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3010 gchar *completed; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3011 msim_msg_dump("msim_import_friends_cb=%s", reply); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3012 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3013 /* Check if the friends were imported successfully. */ |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3014 body = msim_msg_get_dictionary(reply, "body"); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3015 g_return_if_fail(body != NULL); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3016 completed = msim_msg_get_string(body, "Completed"); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3017 g_return_if_fail(body != NULL); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3018 msim_msg_free(body); |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3019 if (!g_str_equal(completed, "True")) |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3020 { |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3021 purple_debug_info("msim_import_friends_cb", |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3022 "failed to import friends: %s", completed); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3023 purple_notify_error(session->account, _("Add friends from MySpace.com"), |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3024 _("Importing friends failed"), NULL); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3025 g_free(completed); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3026 return; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3027 } |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3028 g_free(completed); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3029 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3030 purple_debug_info("msim_import_friends_cb", |
|
19255
1ea47b06f1a6
Initial implementation of friend importing. Not well tested.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19251
diff
changeset
|
3031 "added friends to server-side buddy list, requesting new contacts from server"); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3032 |
|
19462
105305518622
On login, get contacts from server using msim_get_contact_list().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19442
diff
changeset
|
3033 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3034 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3035 /* TODO: show, X friends have been added */ |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3036 } |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3037 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3038 /** Import friends from myspace.com. */ |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3039 static void msim_import_friends(PurplePluginAction *action) |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3040 { |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3041 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
|
3042 MsimSession *session; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3043 gchar *group_name; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3044 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3045 gc = (PurpleConnection *)action->context; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3046 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
|
3047 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3048 group_name = "MySpace Friends"; |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3049 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3050 g_return_if_fail(msim_send(session, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3051 "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
|
3052 "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3053 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3054 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3055 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3056 "uid", MSIM_TYPE_INTEGER, session->userid, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3057 "rid", MSIM_TYPE_INTEGER, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3058 msim_new_reply_callback(session, msim_import_friends_cb, NULL), |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3059 "body", MSIM_TYPE_STRING, |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3060 g_strdup_printf("GroupName=%s", group_name), |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3061 NULL)); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3062 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3063 |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3064 } |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3065 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3066 /** Actions menu for account. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3067 GList * |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3068 msim_actions(PurplePlugin *plugin, gpointer context) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3069 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3070 PurpleConnection *gc; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3071 GList *menu; |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3072 PurplePluginAction *act; |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3073 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3074 gc = (PurpleConnection *)context; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3075 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3076 menu = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3077 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3078 #if 0 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3079 /* TODO: find out how */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3080 act = purple_plugin_action_new(_("Find people..."), msim_); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3081 menu = g_list_append(menu, act); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3082 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3083 act = purple_plugin_action_new(_("Change IM name..."), NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3084 menu = g_list_append(menu, act); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3085 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3086 |
| 21950 | 3087 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends); |
|
19249
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3088 menu = g_list_append(menu, act); |
|
9d921dde9d9f
First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19247
diff
changeset
|
3089 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3090 return menu; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3091 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3092 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3093 /** Callbacks called by Purple, to access this plugin. */ |
| 20057 | 3094 static PurplePluginProtocolInfo prpl_info = { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3095 /* options */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3096 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3097 | OPT_PROTO_MAIL_CHECK, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3098 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3099 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3100 NULL, /* user_splits */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3101 NULL, /* protocol_options */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3102 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3103 msim_list_icon, /* list_icon */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3104 NULL, /* list_emblems */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3105 msim_status_text, /* status_text */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3106 msim_tooltip_text, /* tooltip_text */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3107 msim_status_types, /* status_types */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3108 msim_blist_node_menu, /* blist_node_menu */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3109 NULL, /* chat_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3110 NULL, /* chat_info_defaults */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3111 msim_login, /* login */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3112 msim_close, /* close */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3113 msim_send_im, /* send_im */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3114 NULL, /* set_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3115 msim_send_typing, /* send_typing */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3116 msim_get_info, /* get_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3117 msim_set_status, /* set_status */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3118 msim_set_idle, /* set_idle */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3119 NULL, /* change_passwd */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3120 msim_add_buddy, /* add_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3121 NULL, /* add_buddies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3122 msim_remove_buddy, /* remove_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3123 NULL, /* remove_buddies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3124 NULL, /* add_permit */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3125 NULL, /* add_deny */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3126 NULL, /* rem_permit */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3127 NULL, /* rem_deny */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3128 NULL, /* set_permit_deny */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3129 NULL, /* join_chat */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3130 NULL, /* reject chat invite */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3131 NULL, /* get_chat_name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3132 NULL, /* chat_invite */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3133 NULL, /* chat_leave */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3134 NULL, /* chat_whisper */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3135 NULL, /* chat_send */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3136 NULL, /* keepalive */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3137 NULL, /* register_user */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3138 NULL, /* get_cb_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3139 NULL, /* get_cb_away */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3140 NULL, /* alias_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3141 NULL, /* group_buddy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3142 NULL, /* rename_group */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3143 NULL, /* buddy_free */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3144 NULL, /* convo_closed */ |
|
22100
1226083ed7e2
Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
21950
diff
changeset
|
3145 msim_normalize, /* normalize */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3146 NULL, /* set_buddy_icon */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3147 NULL, /* remove_group */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3148 NULL, /* get_cb_real_name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3149 NULL, /* set_chat_topic */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3150 NULL, /* find_blist_chat */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3151 NULL, /* roomlist_get_list */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3152 NULL, /* roomlist_cancel */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3153 NULL, /* roomlist_expand_category */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3154 NULL, /* can_receive_file */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3155 NULL, /* send_file */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3156 NULL, /* new_xfer */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3157 msim_offline_message, /* offline_message */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3158 NULL, /* whiteboard_prpl_ops */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3159 msim_send_really_raw, /* send_raw */ |
|
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3160 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
|
3161 NULL, /* unregister_user */ |
|
19243
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3162 msim_send_attention, /* send_attention */ |
|
a242e014ab8c
Re-apply the msimprpl-specific parts of revision
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19242
diff
changeset
|
3163 msim_attention_types, /* attention_types */ |
|
23109
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23105
diff
changeset
|
3164 |
|
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23105
diff
changeset
|
3165 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
|
3166 msim_get_account_text_table, /* get_account_text_table */ |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3167 }; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3168 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3169 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3170 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3171 /** Based on MSN's plugin info comments. */ |
|
19721
b2d213681176
Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <pidgin@unreliablesource.net>
parents:
19714
diff
changeset
|
3172 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
|
3173 PURPLE_PLUGIN_MAGIC, |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3174 PURPLE_MAJOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3175 PURPLE_MINOR_VERSION, |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3176 PURPLE_PLUGIN_PROTOCOL, /**< type */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3177 NULL, /**< ui_requirement */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3178 0, /**< flags */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3179 NULL, /**< dependencies */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3180 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3181 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3182 "prpl-myspace", /**< id */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3183 "MySpaceIM", /**< name */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3184 MSIM_PRPL_VERSION_STRING, /**< version */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3185 /** summary */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3186 "MySpaceIM Protocol Plugin", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3187 /** description */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3188 "MySpaceIM Protocol Plugin", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3189 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3190 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3191 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3192 msim_load, /**< load */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3193 NULL, /**< unload */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3194 NULL, /**< destroy */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3195 NULL, /**< ui_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3196 &prpl_info, /**< extra_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3197 NULL, /**< prefs_info */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3198 msim_actions, /**< msim_actions */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3199 NULL, /**< reserved1 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3200 NULL, /**< reserved2 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3201 NULL, /**< reserved3 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3202 NULL /**< reserved4 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3203 }; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3204 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3205 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3206 #ifdef MSIM_SELF_TEST |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3207 /** Test functions. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3208 * 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
|
3209 * this code for the first time, these functions can be instructive in learning |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3210 * how msimprpl is architected. |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3211 */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3212 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3213 msim_test_all(void) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3214 guint failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3215 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3216 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3217 failures = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3218 failures += msim_test_msg(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3219 failures += msim_test_escaping(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3220 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3221 if (failures) { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3222 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3223 } else { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3224 purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3225 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3226 exit(0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3227 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3228 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3229 /** Test MsimMessage for basic functionality. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3230 int |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3231 msim_test_msg(void) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3232 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3233 MsimMessage *msg, *msg_cloned, *msg2; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3234 GList *list; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3235 gchar *packed, *packed_expected, *packed_cloned; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3236 guint failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3237 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3238 failures = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3239 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3240 purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3241 msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3242 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3243 /* 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
|
3244 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
|
3245 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3246 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3247 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3248 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
|
3249 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3250 msim_msg_dump("msg debug str=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3251 packed = msim_msg_pack(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3252 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3253 purple_debug_info("msim", "msg packed=%s\n", packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3254 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3255 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3256 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3257 |
|
19428
1fa10842eb83
In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19427
diff
changeset
|
3258 if (!g_str_equal(packed, packed_expected)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3259 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
|
3260 ++failures, packed, packed_expected); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3261 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3262 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3263 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3264 msg_cloned = msim_msg_clone(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3265 packed_cloned = msim_msg_pack(msg_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3266 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3267 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
|
3268 if (!g_str_equal(packed, packed_cloned)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3269 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
|
3270 ++failures, packed_cloned, packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3271 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3272 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3273 g_free(packed); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3274 g_free(packed_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3275 msim_msg_free(msg_cloned); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3276 msim_msg_free(msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3277 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3278 /* Try some of the more advanced functionality */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3279 list = NULL; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3280 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3281 list = g_list_prepend(list, "item3"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3282 list = g_list_prepend(list, "item2"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3283 list = g_list_prepend(list, "item1"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3284 list = g_list_prepend(list, "item0"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3285 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3286 msg = msim_msg_new(NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3287 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3288 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3289 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3290 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE)); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3291 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3292 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3293 msim_msg_dump("msg with list=%s\n", msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3294 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
|
3295 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3296 msg2 = msim_msg_new(NULL); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3297 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value")); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3298 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3299 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3300 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
|
3301 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3302 msim_msg_free(msg2); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3303 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3304 return failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3305 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3306 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3307 /** Test protocol-level escaping/unescaping. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3308 int |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3309 msim_test_escaping(void) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3310 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3311 guint failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3312 gchar *raw, *escaped, *unescaped, *expected; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3313 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3314 failures = 0; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3315 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3316 purple_debug_info("msim", "\n\nTesting escaping\n"); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3317 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3318 raw = "hello/world\\hello/world"; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3319 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3320 escaped = msim_escape(raw); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3321 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
|
3322 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
|
3323 if (!g_str_equal(escaped, expected)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3324 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3325 ++failures, escaped, expected); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3326 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3327 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3328 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3329 unescaped = msim_unescape(escaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3330 g_free(escaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3331 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
|
3332 if (!g_str_equal(raw, unescaped)) { |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3333 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3334 ++failures, raw, unescaped); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3335 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3336 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3337 return failures; |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3338 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3339 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3340 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3341 static gboolean |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3342 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params) |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3343 { |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3344 PurpleAccount *account; |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3345 MsimSession *session; |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3346 GList *l; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3347 gchar *uid_str, *cid_str; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3348 guint uid, cid; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3349 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3350 if (g_ascii_strcasecmp(proto, "myim")) |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3351 return FALSE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3352 |
|
19439
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3353 /* Parameters are case-insensitive. */ |
|
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3354 uid_str = g_hash_table_lookup(params, "uid"); |
|
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3355 cid_str = g_hash_table_lookup(params, "cid"); |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3356 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3357 uid = uid_str ? atol(uid_str) : 0; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3358 cid = cid_str ? atol(cid_str) : 0; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3359 |
|
19439
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3360 /* Need a contact. */ |
|
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3361 g_return_val_if_fail(cid != 0, FALSE); |
|
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3362 |
|
19442
d7cd580c0753
In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19441
diff
changeset
|
3363 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on |
|
d7cd580c0753
In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19441
diff
changeset
|
3364 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */ |
|
d7cd580c0753
In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19441
diff
changeset
|
3365 |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3366 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3367 * directly use cid directly from parameters, because it might not be numeric. |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3368 * It is trivial to change this to allow cID to be a username, but that's not how |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3369 * the official MySpaceIM client works, so don't provide that functionality. */ |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3370 cid_str = g_strdup_printf("%d", cid); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3371 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3372 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3373 /* Find our account with specified user id, or use first connected account if uid=0. */ |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3374 account = NULL; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3375 l = purple_accounts_get_all(); |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3376 while (l) { |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3377 if (purple_account_is_connected(l->data) && |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3378 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) { |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3379 account = l->data; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3380 break; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3381 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3382 l = l->next; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3383 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3384 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3385 if (!account) { |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3386 purple_notify_error(NULL, _("myim URL handler"), |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3387 _("No suitable MySpaceIM account could be found to open this myim URL."), |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3388 _("Enable the proper MySpaceIM account and try again.")); |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3389 g_free(cid_str); |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3390 return FALSE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3391 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3392 |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3393 session = (MsimSession *)account->gc->proto_data; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3394 g_return_val_if_fail(session != NULL, FALSE); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3395 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3396 /* Lookup userid to username. TODO: push this down, to IM sending/contact |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3397 * adding functions. */ |
|
19439
0202145e3465
In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19437
diff
changeset
|
3398 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3399 /* myim:sendIM?uID=USERID&cID=CONTACTID */ |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3400 if (!g_ascii_strcasecmp(cmd, "sendIM")) { |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3401 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3402 g_free(cid_str); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3403 return TRUE; |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3404 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3405 /* myim:addContact?uID=USERID&cID=CONTACTID */ |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3406 } else if (!g_ascii_strcasecmp(cmd, "addContact")) { |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3407 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3408 g_free(cid_str); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3409 return TRUE; |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3410 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3411 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3412 return FALSE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3413 } |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3414 |
|
19441
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3415 /* 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
|
3416 * 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
|
3417 * looked up if possible? */ |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3418 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3419 /** Handle a myim:sendIM URI command, after username has been looked up. */ |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3420 static void |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3421 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
|
3422 { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3423 PurpleConversation *conv; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3424 MsimMessage *body; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3425 gchar *username; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3426 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3427 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
|
3428 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
|
3429 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
|
3430 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3431 if (!username) { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3432 guint uid; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3433 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3434 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
|
3435 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
|
3436 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3437 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
|
3438 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3439 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3440 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3441 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
|
3442 if (!conv) { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3443 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
|
3444 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
|
3445 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3446 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3447 /* 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
|
3448 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
|
3449 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3450 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
|
3451 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3452 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3453 /** Handle a myim:addContact command, after username has been looked up. */ |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3454 static void |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3455 msim_uri_handler_addContact_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
|
3456 { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3457 MsimMessage *body; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3458 gchar *username; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3459 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3460 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
|
3461 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
|
3462 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
|
3463 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3464 if (!username) { |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3465 guint uid; |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3466 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3467 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
|
3468 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
|
3469 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3470 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
|
3471 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3472 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3473 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3474 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL); |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3475 |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3476 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
|
3477 } |
|
bbb205c49228
For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19439
diff
changeset
|
3478 |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3479 /** Initialize plugin. */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3480 void |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3481 init_plugin(PurplePlugin *plugin) |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3482 { |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3483 #ifdef MSIM_SELF_TEST |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3484 msim_test_all(); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3485 exit(0); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3486 #endif /* MSIM_SELF_TEST */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3487 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3488 PurpleAccountOption *option; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3489 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
|
3490 |
|
19598
339c7c8c0e08
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19597
diff
changeset
|
3491 #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
|
3492 /* 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
|
3493 * 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
|
3494 * 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
|
3495 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
|
3496 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
|
3497 "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
|
3498 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
|
3499 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
|
3500 #endif |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3501 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3502 /* TODO: default to automatically try different ports. Make the user be |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3503 * able to set the first port to try (like LastConnectedPort in Windows client). */ |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3504 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3505 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3506 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3507 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3508 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3509 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3510 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3511 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
|
3512 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3513 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3514 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
|
3515 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3516 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3517 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3518 #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
|
3519 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3520 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3521 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3522 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3523 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3524 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
|
3525 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3526 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3527 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
|
3528 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3529 #endif |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3530 |
|
19436
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3531 /* Code below only runs once. Based on oscar.c's oscar_init(). */ |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3532 if (initialized) |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3533 return; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3534 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3535 initialized = TRUE; |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3536 |
|
a62c9b9c4596
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
19435
diff
changeset
|
3537 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
|
3538 PURPLE_CALLBACK(msim_uri_handler), NULL); |
|
19242
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3539 } |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3540 |
|
f60192409e7f
merge of '0ae78c5d891099ade8e599dc2087ff9411b98d5f'
Jeffrey Connelly <jaconnel@calpoly.edu>
diff
changeset
|
3541 PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |
