annotate libpurple/protocols/myspace/myspace.c @ 18917:6ea5602643ea

disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
author Jeffrey Connelly <jaconnel@calpoly.edu>
date Tue, 14 Aug 2007 02:45:06 +0000
parents 0f46f13c0805
children f60192409e7f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1 /* MySpaceIM Protocol Plugin
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3 * \author Jeff Connelly
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
5 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
6 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
7 * Based on Purple's "C Plugin HOWTO" hello world example.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
8 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
9 * Code also drawn from mockprpl:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
10 * http://snarfed.org/space/purple+mock+protocol+plugin
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
11 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
12 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
13 * and some constructs also based on existing Purple plugins, which are:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
14 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
15 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
16 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
17 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
18 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
19 * This program is free software; you can redistribute it and/or modify
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
20 * it under the terms of the GNU General Public License as published by
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
21 * the Free Software Foundation; either version 2 of the License, or
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
22 * (at your option) any later version.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
23 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
24 * This program is distributed in the hope that it will be useful,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
27 * GNU General Public License for more details.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
28 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
29 * You should have received a copy of the GNU General Public License
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
30 * along with this program; if not, write to the Free Software
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
31 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
32 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
33
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
34 #define PURPLE_PLUGIN
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
35
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
36 #include "message.h"
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
37 #include "persist.h"
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
38 #include "myspace.h"
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
39
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
40
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
41 /* Loosely based on Miranda plugin by Scott Ellis, formatting.cpp,
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
42 * https://server.scottellis.com.au/websvn/filedetails.php?repname=Miranda+Plugins&path=%2FMySpace%2Fformatting.cpp&rev=0&sc=0 */
17957
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
43
17960
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
44 /* The names in in emoticon_names (for <i n=whatever>) map to corresponding
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
45 * entries in emoticon_symbols (for the ASCII representation of the emoticon).
18893
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
46 *
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
47 * Multiple emoticon symbols in Pidgin can map to one name. List the
17960
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
48 * canonical form, as inserted by the "Smile!" dialog, first. For example,
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
49 * :) comes before :-), because although both are recognized as 'happy',
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
50 * the first is inserted by the smiley button.
17960
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
51 *
f61047bae7c0 Recognize non-canonical emoticon forms from Pidgin, and turn them into
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17959
diff changeset
52 * Note that symbols are case-sensitive in Pidgin -- :-X is not :-x. */
18893
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
53 static struct MSIM_EMOTICON
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
54 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
55 gchar *name;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
56 gchar *symbol;
18893
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
57 } msim_emoticons[] = {
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
58 /* Unfortunately, this list duplicates much of the file
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
59 * pidgin/pidgin/pixmaps/emotes/default/22/default.theme.in, because
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
60 * that file is part of Pidgin, but we're part of libpurple.
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
61 */
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
62 { "bigsmile", ":D" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
63 { "bigsmile", ":-D" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
64 { "devil", "}:)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
65 { "frazzled", ":Z" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
66 { "geek", "B)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
67 { "googles", "%)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
68 { "growl", ":E" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
69 { "laugh", ":))" }, /* Must be before ':)' */
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
70 { "happy", ":)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
71 { "happy", ":-)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
72 { "happi", ":)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
73 { "heart", ":X" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
74 { "mohawk", "-:" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
75 { "mad", "X(" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
76 { "messed", "X)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
77 { "nerd", "Q)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
78 { "oops", ":G" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
79 { "pirate", "P)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
80 { "scared", ":O" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
81 { "sidefrown", ":{" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
82 { "sinister", ":B" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
83 { "smirk", ":," },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
84 { "straight", ":|" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
85 { "tongue", ":P" },
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
86 { "tongue", ":p" },
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
87 { "tongy", ":P" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
88 { "upset", "B|" },
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
89 { "wink", ";-)" },
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
90 { "wink", ";)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
91 { "winc", ";)" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
92 { "worried", ":[" },
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
93 { "kiss", ":x" },
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
94 { NULL, NULL }
18893
cd90423c0a88 Use an array of structs instead of parallel arrays for the emoticon
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18892
diff changeset
95 };
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
96
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
97 /* Internal functions */
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
98 static void msim_send_zap(PurpleBlistNode *node, gpointer zap_num_ptr);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
99
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
100 #ifdef MSIM_DEBUG_MSG
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
101 static void print_hash_item(gpointer key, gpointer value, gpointer user_data);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
102 #endif
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
103
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
104 static int msim_send_really_raw(PurpleConnection *gc, const char *buf,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
105 int total_bytes);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
106 static gboolean msim_login_challenge(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
107 static const gchar *msim_compute_login_response(
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
108 const gchar nonce[2 * NONCE_SIZE], const gchar *email,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
109 const gchar *password, guint *response_len);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
110 static gboolean msim_send_bm(MsimSession *session, const gchar *who,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
111 const gchar *text, int type);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
112
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
113 static guint msim_point_to_purple_size(MsimSession *session, guint point);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
114 static guint msim_purple_size_to_point(MsimSession *session, guint size);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
115 static guint msim_height_to_point(MsimSession *session, guint height);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
116 static guint msim_point_to_height(MsimSession *session, guint point);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
117
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
118 static void msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
119
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
120 static void msim_markup_tag_to_html(MsimSession *, xmlnode *root,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
121 gchar **begin, gchar **end);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
122 static void html_tag_to_msim_markup(MsimSession *, xmlnode *root,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
123 gchar **begin, gchar **end);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
124 static gchar *msim_convert_xml(MsimSession *, const gchar *raw,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
125 MSIM_XMLNODE_CONVERT f);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
126 static gchar *msim_convert_smileys_to_markup(gchar *before);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
127
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
128 /* High-level msim markup <=> html conversion functions. */
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
129 static gchar *msim_markup_to_html(MsimSession *, const gchar *raw);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
130 static gchar *html_to_msim_markup(MsimSession *, const gchar *raw);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
131
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
132 static MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
133 static MsimUser *msim_find_user(MsimSession *session, const gchar *username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
134
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
135 static gboolean msim_incoming_bm_record_cv(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
136 MsimMessage *msg);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
137 static gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
138 static gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
139 static gboolean msim_incoming_im(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
140 static gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
141 static gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
142 static gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
143 static gboolean msim_incoming_unofficial_client(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
144 MsimMessage *msg);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
145
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
146 #ifdef MSIM_SEND_CLIENT_VERSION
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
147 static gboolean msim_send_unofficial_client(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
148 gchar *username);
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
149 #endif
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
150
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
151 static void msim_get_info_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
152 static gchar *msim_format_now_playing(gchar *band, gchar *song);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
153
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
154 static void msim_set_status_code(MsimSession *session, guint code,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
155 gchar *statstring);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
156
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
157 static void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full);
18915
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
158
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
159 static void msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
160 gsize len, const gchar *error_message);
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
161
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
162 static void msim_store_user_info_each(gpointer key, gpointer value,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
163 gpointer user_data);
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
164 static gboolean msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
165 static gboolean msim_process_server_info(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
166 MsimMessage *msg);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
167 static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
168 static gboolean msim_process_reply(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
169
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
170 static gboolean msim_preprocess_incoming(MsimSession *session,MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
171
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
172 #ifdef MSIM_USE_KEEPALIVE
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
173 static gboolean msim_check_alive(gpointer data);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
174 #endif
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
175
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
176 static gboolean msim_we_are_logged_on(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
177
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
178 static gboolean msim_process(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
179
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
180 static MsimMessage *msim_do_postprocessing(MsimMessage *msg,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
181 const gchar *uid_field_name, const gchar *uid_before, guint uid);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
182 static void msim_postprocess_outgoing_cb(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
183 MsimMessage *userinfo, gpointer data);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
184 static gboolean msim_postprocess_outgoing(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
185 MsimMessage *msg, const gchar *username, const gchar *uid_field_name,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
186 const gchar *uid_before);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
187
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
188 static gboolean msim_error(MsimSession *session, MsimMessage *msg);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
189
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
190 static void msim_check_inbox_cb(MsimSession *session, MsimMessage *userinfo,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
191 gpointer data);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
192 static gboolean msim_check_inbox(gpointer data);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
193
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
194 static void msim_input_cb(gpointer gc_uncasted, gint source,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
195 PurpleInputCondition cond);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
196
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
197 static guint msim_new_reply_callback(MsimSession *session,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
198 MSIM_USER_LOOKUP_CB cb, gpointer data);
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
199
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
200 static void msim_connect_cb(gpointer data, gint source,
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
201 const gchar *error_message);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
202
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
203 static gboolean msim_is_userid(const gchar *user);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
204 static gboolean msim_is_email(const gchar *user);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
205
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
206 static void msim_lookup_user(MsimSession *session, const gchar *user,
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
207 MSIM_USER_LOOKUP_CB cb, gpointer data);
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
208
18892
138e9be2f917 Always use our own msim_round() instead of checking for C99's round and using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18890
diff changeset
209 double msim_round(double round);
17971
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
210
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
211 /* round is part of C99, but sometimes is unavailable before then.
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
212 * Based on http://forums.belution.com/en/cpp/000/050/13.shtml
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
213 */
18892
138e9be2f917 Always use our own msim_round() instead of checking for C99's round and using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18890
diff changeset
214 double msim_round(double value)
17971
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
215 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
216 if (value < 0) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
217 return -(floor(-value + 0.5));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
218 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
219 return floor( value + 0.5);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
220 }
17971
13a4f57f53a9 Implement round() if it is not available, using floor().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17969
diff changeset
221 }
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
222
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
223 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
224 * Load the plugin.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
225 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
226 gboolean
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
227 msim_load(PurplePlugin *plugin)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
228 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
229 /* If compiled to use RC4 from libpurple, check if it is really there. */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
230 if (!purple_ciphers_find_cipher("rc4")) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
231 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
232 purple_notify_error(plugin, _("Missing Cipher"),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
233 _("The RC4 cipher could not be found"),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
234 _("Upgrade "
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
235 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM "
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
236 "plugin will not be loaded."));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
237 return FALSE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
238 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
239 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
240 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
241
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
242 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
243 * Get possible user status types. Based on mockprpl.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
244 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
245 * @return GList of status types.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
246 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
247 GList *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
248 msim_status_types(PurpleAccount *acct)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
249 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
250 GList *types;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
251 PurpleStatusType *status;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
252
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
253 purple_debug_info("myspace", "returning status types\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
254
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
255 types = NULL;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
256
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
257 /* Statuses are almost all the same. Define a macro to reduce code repetition. */
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
258 #define _MSIM_ADD_NEW_STATUS(prim) status = \
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
259 purple_status_type_new_with_attrs( \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
260 prim, /* PurpleStatusPrimitive */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
261 NULL, /* id - use default */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
262 NULL, /* name - use default */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
263 TRUE, /* savable */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
264 TRUE, /* user_settable */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
265 FALSE, /* not independent */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
266 \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
267 /* Attributes - each status can have a message. */ \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
268 "message", \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
269 _("Message"), \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
270 purple_value_new(PURPLE_TYPE_STRING), \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
271 NULL); \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
272 \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
273 \
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
274 types = g_list_append(types, status)
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
275
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
276
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
277 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
278 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
279 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
280 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
281
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
282
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
283 return types;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
284 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
285
17963
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
286 /** Zap someone. Callback from msim_blist_node_menu zap menu. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
287 static void
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
288 msim_send_zap(PurpleBlistNode *node, gpointer zap_num_ptr)
17963
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
289 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
290 PurpleBuddy *buddy;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
291 PurpleConnection *gc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
292 MsimSession *session;
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
293 gchar *username, *zap_string, *zap_text;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
294 guint zap;
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
295 const gchar *zap_gerund[10];
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
296
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
297 if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
298 /* Only know about buddies for now. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
299 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
300 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
301
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
302 zap_gerund[0] = _("Zapping");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
303 zap_gerund[1] = _("Whacking");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
304 zap_gerund[2] = _("Torching");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
305 zap_gerund[3] = _("Smooching");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
306 zap_gerund[4] = _("Hugging");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
307 zap_gerund[5] = _("Bslapping");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
308 zap_gerund[6] = _("Goosing");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
309 zap_gerund[7] = _("Hi-fiving");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
310 zap_gerund[8] = _("Punking");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
311 zap_gerund[9] = _("Raspberry'ing");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
312
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
313 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
314
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
315 buddy = (PurpleBuddy *)node;
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
316 gc = purple_account_get_connection(buddy->account);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
317 g_return_if_fail(gc != NULL);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
318
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
319 session = (MsimSession *)gc->proto_data;
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
320 g_return_if_fail(session != NULL);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
321
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
322 username = buddy->name;
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
323 g_return_if_fail(username != NULL);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
324
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
325 zap = GPOINTER_TO_INT(zap_num_ptr);
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
326 zap_string = g_strdup_printf("!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", zap);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
327 zap_text = g_strdup_printf("*** %s! ***", zap_gerund[zap]);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
328
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
329 serv_got_im(session->gc, username, zap_text,
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
330 PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_SYSTEM, time(NULL));
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
331
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
332 if (!msim_send_bm(session, username, zap_string, MSIM_BM_ACTION)) {
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
333 purple_debug_info("msim_send_zap", "msim_send_bm failed: zapping %s with %s",
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
334 username, zap_string);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
335 }
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
336
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
337 g_free(zap_string);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
338 g_free(zap_text);
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
339 return;
17963
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
340 }
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
341
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
342
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
343 /** Return menu, if any, for a buddy list node. */
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
344 GList *
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
345 msim_blist_node_menu(PurpleBlistNode *node)
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
346 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
347 GList *menu, *zap_menu;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
348 PurpleMenuAction *act;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
349 const gchar *zap_names[10];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
350 guint i;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
351
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
352 if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
353 /* Only know about buddies for now. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
354 return NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
355 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
356
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
357 /* Names from official client. */
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
358 zap_names[0] = _("zap");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
359 zap_names[1] = _("whack");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
360 zap_names[2] = _("torch");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
361 zap_names[3] = _("smooch");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
362 zap_names[4] = _("hug");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
363 zap_names[5] = _("bslap");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
364 zap_names[6] = _("goose");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
365 zap_names[7] = _("hi-five");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
366 zap_names[8] = _("punk'd");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
367 zap_names[9] = _("raspberry");
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
368
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
369 menu = zap_menu = NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
370
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
371 /* TODO: move to / command, or better yet new API */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
372 for (i = 0; i < sizeof(zap_names) / sizeof(zap_names[0]); ++i) {
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
373 act = purple_menu_action_new(zap_names[i], PURPLE_CALLBACK(msim_send_zap),
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
374 GUINT_TO_POINTER(i), NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
375 zap_menu = g_list_append(zap_menu, act);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
376 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
377
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
378 act = purple_menu_action_new(_("Zap"), NULL, NULL, zap_menu);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
379 menu = g_list_append(menu, act);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
380
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
381 return menu;
17963
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
382 }
8305709dd0b9 Allow sending zaps through buddy list menu.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17962
diff changeset
383
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
384 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
385 * Return the icon name for a buddy and account.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
386 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
387 * @param acct The account to find the icon for, or NULL for protocol icon.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
388 * @param buddy The buddy to find the icon for, or NULL for the account icon.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
389 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
390 * @return The base icon name string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
391 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
392 const gchar *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
393 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
394 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
395 /* Use a MySpace icon submitted by hbons at
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
396 * http://developer.pidgin.im/wiki/MySpaceIM. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
397 return "myspace";
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
398 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
399
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
400 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
401 * Replace 'old' with 'new' in 'str'.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
402 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
403 * @param str The original string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
404 * @param old The substring of 'str' to replace.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
405 * @param new The replacement for 'old' within 'str'.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
406 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
407 * @return A _new_ string, based on 'str', with 'old' replaced
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
408 * by 'new'. Must be g_free()'d by caller.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
409 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
410 * This string replace method is based on
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
411 * http://mail.gnome.org/archives/gtk-app-devel-list/2000-July/msg00201.html
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
412 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
413 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
414 gchar *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
415 str_replace(const gchar *str, const gchar *old, const gchar *new)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
416 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
417 gchar **items;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
418 gchar *ret;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
419
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
420 items = g_strsplit(str, old, -1);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
421 ret = g_strjoinv(new, items);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
422 g_free(items);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
423 return ret;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
424 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
425
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
426 #ifdef MSIM_DEBUG_MSG
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
427 static void
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
428 print_hash_item(gpointer key, gpointer value, gpointer user_data)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
429 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
430 purple_debug_info("msim", "%s=%s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
431 key ? (gchar *)key : "(NULL)",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
432 value ? (gchar *)value : "(NULL)");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
433 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
434 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
435
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
436 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
437 * Send raw data (given as a NUL-terminated string) to the server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
438 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
439 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
440 * @param msg The raw data to send, in a NUL-terminated string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
441 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
442 * @return TRUE if succeeded, FALSE if not.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
443 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
444 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
445 gboolean
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
446 msim_send_raw(MsimSession *session, const gchar *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
447 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
448 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
449 g_return_val_if_fail(msg != NULL, FALSE);
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
450
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
451 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
452
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
453 return msim_send_really_raw(session->gc, msg, strlen(msg)) ==
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
454 strlen(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
455 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
456
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
457 /** Send raw data to the server, possibly with embedded NULs.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
458 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
459 * Used in prpl_info struct, so that plugins can have the most possible
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
460 * control of what is sent over the connection. Inside this prpl,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
461 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
462 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
463 * @param gc PurpleConnection
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
464 * @param buf Buffer to send
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
465 * @param total_bytes Size of buffer to send
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
466 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
467 * @return Bytes successfully sent, or -1 on error.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
468 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
469 static int
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
470 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
471 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
472 int total_bytes_sent;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
473 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
474
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
475 g_return_val_if_fail(gc != NULL, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
476 g_return_val_if_fail(buf != NULL, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
477 g_return_val_if_fail(total_bytes >= 0, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
478
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
479 session = (MsimSession *)gc->proto_data;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
480
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
481 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
482
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
483 /* Loop until all data is sent, or a failure occurs. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
484 total_bytes_sent = 0;
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
485 do {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
486 int bytes_sent;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
487
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
488 bytes_sent = send(session->fd, buf + total_bytes_sent,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
489 total_bytes - total_bytes_sent, 0);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
490
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
491 if (bytes_sent < 0) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
492 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
493 buf, g_strerror(errno));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
494 return total_bytes_sent;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
495 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
496 total_bytes_sent += bytes_sent;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
497
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
498 } while(total_bytes_sent < total_bytes);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
499
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
500 return total_bytes_sent;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
501 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
502
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
503
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
504 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
505 * Start logging in to the MSIM servers.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
506 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
507 * @param acct Account information to use to login.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
508 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
509 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
510 msim_login(PurpleAccount *acct)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
511 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
512 PurpleConnection *gc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
513 const gchar *host;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
514 int port;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
515
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
516 g_return_if_fail(acct != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
517 g_return_if_fail(acct->username != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
518
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
519 purple_debug_info("msim", "logging in %s\n", acct->username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
520
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
521 gc = purple_account_get_connection(acct);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
522 gc->proto_data = msim_session_new(acct);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
523 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
524
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
525 /* Passwords are limited in length. */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
526 if (strlen(acct->password) > MSIM_MAX_PASSWORD_LENGTH) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
527 gchar *str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
528
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
529 str = g_strdup_printf(
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
530 _("Sorry, passwords over %d characters in length (yours is "
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
531 "%d) are not supported by MySpace."),
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
532 MSIM_MAX_PASSWORD_LENGTH,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
533 (int)strlen(acct->password));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
534
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
535 /* Notify an error message also, because this is important! */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
536 purple_notify_error(acct, g_strdup(_("MySpaceIM Error")), str, NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
537
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
538 purple_connection_error(gc, str);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
539
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
540 g_free(str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
541 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
542
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
543 /* 1. connect to server */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
544 purple_connection_update_progress(gc, _("Connecting"),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
545 0, /* which connection step this is */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
546 4); /* total number of steps */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
547
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
548 host = purple_account_get_string(acct, "server", MSIM_SERVER);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
549 port = purple_account_get_int(acct, "port", MSIM_PORT);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
550
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
551 /* From purple.sf.net/api:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
552 * """Note that this function name can be misleading--although it is called
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
553 * "proxy connect," it is used for establishing any outgoing TCP connection,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
554 * whether through a proxy or not.""" */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
555
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
556 /* Calls msim_connect_cb when connected. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
557 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
558 /* TODO: try other ports if in auto mode, then save
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
559 * working port and try that first next time. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
560 purple_connection_error(gc, _("Couldn't create socket"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
561 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
562 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
563 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
564
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
565 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
566 * Process a login challenge, sending a response.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
567 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
568 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
569 * @param msg Login challenge message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
570 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
571 * @return TRUE if successful, FALSE if not
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
572 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
573 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
574 msim_login_challenge(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
575 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
576 PurpleAccount *account;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
577 const gchar *response;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
578 guint response_len;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
579 gchar *nc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
580 gsize nc_len;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
581
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
582 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
583 g_return_val_if_fail(msg != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
584
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
585 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
586
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
587 account = session->account;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
588
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
589 g_return_val_if_fail(account != NULL, FALSE);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
590
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
591 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
592
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
593 purple_debug_info("msim", "nc is %d bytes, decoded\n", nc_len);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
594
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
595 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
596 purple_debug_info("msim", "bad nc length: %x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
597 purple_connection_error(session->gc, _("Unexpected challenge length from server"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
598 return FALSE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
599 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
600
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
601 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
602
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
603 response_len = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
604 response = msim_compute_login_response(nc, account->username, account->password, &response_len);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
605
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
606 g_free(nc);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
607
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
608 return msim_send(session,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
609 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
610 /* This is actually user's email address. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
611 "username", MSIM_TYPE_STRING, g_strdup(account->username),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
612 /* GString and gchar * response will be freed in msim_msg_free() in msim_send(). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
613 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
614 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
615 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
616 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
617 "reconn", MSIM_TYPE_INTEGER, 0,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
618 "status", MSIM_TYPE_INTEGER, 100,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
619 "id", MSIM_TYPE_INTEGER, 1,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
620 NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
621 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
622
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
623 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
624 * Compute the base64'd login challenge response based on username, password, nonce, and IPs.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
625 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
626 * @param nonce The base64 encoded nonce ('nc') field from the server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
627 * @param email User's email address (used as login name).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
628 * @param password User's cleartext password.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
629 * @param response_len Will be written with response length.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
630 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
631 * @return Binary login challenge response, ready to send to the server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
632 * Must be g_free()'d when finished. NULL if error.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
633 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
634 static const gchar *
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
635 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
636 const gchar *email, const gchar *password, guint *response_len)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
637 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
638 PurpleCipherContext *key_context;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
639 PurpleCipher *sha1;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
640 PurpleCipherContext *rc4;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
641
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
642 guchar hash_pw[HASH_SIZE];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
643 guchar key[HASH_SIZE];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
644 gchar *password_utf16le, *password_utf8_lc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
645 guchar *data;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
646 guchar *data_out;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
647 size_t data_len, data_out_len;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
648 gsize conv_bytes_read, conv_bytes_written;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
649 GError *conv_error;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
650 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
651 int i;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
652 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
653
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
654 g_return_val_if_fail(nonce != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
655 g_return_val_if_fail(email != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
656 g_return_val_if_fail(password != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
657 g_return_val_if_fail(response_len != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
658
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
659 /* Convert password to lowercase (required for passwords containing
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
660 * uppercase characters). MySpace passwords are lowercase,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
661 * see ticket #2066. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
662 password_utf8_lc = g_utf8_strdown(password, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
663
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
664 /* Convert ASCII password to UTF16 little endian */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
665 purple_debug_info("msim", "converting password to UTF-16LE\n");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
666 conv_error = NULL;
18894
daedc9647341 Convert password to lowercase using g_utf8_strdown(), better because
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18893
diff changeset
667 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
668 &conv_bytes_read, &conv_bytes_written, &conv_error);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
669 g_free(password_utf8_lc);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
670
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
671 g_return_val_if_fail(conv_bytes_read == strlen(password), NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
672
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
673 if (conv_error != NULL) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
674 purple_debug_error("msim",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
675 "g_convert password UTF8->UTF16LE failed: %s",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
676 conv_error->message);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
677 g_error_free(conv_error);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
678 return NULL;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
679 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
680
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
681 /* Compute password hash */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
682 purple_cipher_digest_region("sha1", (guchar *)password_utf16le,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
683 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
684 g_free(password_utf16le);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
685
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
686 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
687 purple_debug_info("msim", "pwhash = ");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
688 for (i = 0; i < sizeof(hash_pw); i++)
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
689 purple_debug_info("msim", "%.2x ", hash_pw[i]);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
690 purple_debug_info("msim", "\n");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
691 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
692
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
693 /* key = sha1(sha1(pw) + nonce2) */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
694 sha1 = purple_ciphers_find_cipher("sha1");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
695 key_context = purple_cipher_context_new(sha1, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
696 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
697 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
698 purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
699
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
700 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
701 purple_debug_info("msim", "key = ");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
702 for (i = 0; i < sizeof(key); i++) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
703 purple_debug_info("msim", "%.2x ", key[i]);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
704 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
705 purple_debug_info("msim", "\n");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
706 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
707
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
708 rc4 = purple_cipher_context_new_by_name("rc4", NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
709
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
710 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
711 * but only first 0x10 used for the RC4 key. */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
712 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
713 purple_cipher_context_set_key(rc4, key);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
714
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
715 /* TODO: obtain IPs of network interfaces */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
716
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
717 /* rc4 encrypt:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
718 * nonce1+email+IP list */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
719
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
720 data_len = NONCE_SIZE + strlen(email) + MSIM_LOGIN_IP_LIST_LEN;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
721 data = g_new0(guchar, data_len);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
722 memcpy(data, nonce, NONCE_SIZE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
723 memcpy(data + NONCE_SIZE, email, strlen(email));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
724 memcpy(data + NONCE_SIZE + strlen(email), MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
725
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
726 data_out = g_new0(guchar, data_len);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
727
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
728 purple_cipher_context_encrypt(rc4, (const guchar *)data,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
729 data_len, data_out, &data_out_len);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
730 purple_cipher_context_destroy(rc4);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
731
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
732 g_assert(data_out_len == data_len);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
733
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
734 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
735 purple_debug_info("msim", "response=<%s>\n", data_out);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
736 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
737
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
738 *response_len = data_out_len;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
739
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
740 return (const gchar *)data_out;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
741 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
742
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
743 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
744 * Schedule an IM to be sent once the user ID is looked up.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
745 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
746 * @param gc Connection.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
747 * @param who A user id, email, or username to send the message to.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
748 * @param message Instant message text to send.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
749 * @param flags Flags.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
750 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
751 * @return 1 if successful or postponed, -1 if failed
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
752 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
753 * Allows sending to a user by username, email address, or userid. If
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
754 * a username or email address is given, the userid must be looked up.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
755 * This function does that by calling msim_postprocess_outgoing().
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
756 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
757 int
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
758 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
759 PurpleMessageFlags flags)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
760 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
761 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
762 gchar *message_msim;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
763 int rc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
764
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
765 g_return_val_if_fail(gc != NULL, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
766 g_return_val_if_fail(who != NULL, -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
767 g_return_val_if_fail(message != NULL, -1);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
768
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
769 /* 'flags' has many options, not used here. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
770
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
771 session = (MsimSession *)gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
772
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
773 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
774
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
775 message_msim = html_to_msim_markup(session, message);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
776
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
777 if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
778 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
779 * return 1 even if the message could not be sent, since I don't know if
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
780 * it has failed yet--because the IM is only sent after the userid is
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
781 * retrieved from the server (which happens after this function returns).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
782 */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
783 /* TODO: maybe if message is delayed, don't echo to conv window,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
784 * but do echo it to conv window manually once it is actually
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
785 * sent? Would be complicated. */
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
786 rc = 1;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
787 } else {
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
788 rc = -1;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
789 }
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
790
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
791 g_free(message_msim);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
792
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
793 /*
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
794 * In MySpace, you login with your email address, but don't talk to other
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
795 * users using their email address. So there is currently an asymmetry in the
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
796 * IM windows when using this plugin:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
797 *
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
798 * you@example.com: hello
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
799 * some_other_user: what's going on?
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
800 * you@example.com: just coding a prpl
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
801 *
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
802 * TODO: Make the sent IM's appear as from the user's username, instead of
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
803 * their email address. Purple uses the login (in MSIM, the email)--change this.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
804 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
805
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
806 return rc;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
807 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
808
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
809 /** Send a buddy message of a given type.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
810 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
811 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
812 * @param who Username to send message to.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
813 * @param text Message text to send. Not freed; will be copied.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
814 * @param type A MSIM_BM_* constant.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
815 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
816 * @return TRUE if success, FALSE if fail.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
817 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
818 * Buddy messages ('bm') include instant messages, action messages, status messages, etc.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
819 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
820 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
821 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
822 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
823 int type)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
824 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
825 gboolean rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
826 MsimMessage *msg;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
827 const gchar *from_username;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
828
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
829 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
830 g_return_val_if_fail(who != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
831 g_return_val_if_fail(text != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
832
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
833 from_username = session->account->username;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
834
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
835 g_return_val_if_fail(from_username != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
836
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
837 purple_debug_info("msim", "sending %d message from %s to %s: %s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
838 type, from_username, who, text);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
839
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
840 msg = msim_msg_new(
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
841 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
842 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
843 /* 't' will be inserted here */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
844 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
845 "msg", MSIM_TYPE_STRING, g_strdup(text),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
846 NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
847
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
848 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
849
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
850 msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
851
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
852 return rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
853 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
854
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
855 /* Indexes of this array + 1 map HTML font size to scale of normal font size. *
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
856 * Based on _point_sizes from libpurple/gtkimhtml.c
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
857 * 1 2 3 4 5 6 7 */
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
858 static gdouble _font_scale[] = { .85, .95, 1, 1.2, 1.44, 1.728, 2.0736 };
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
859
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
860 #define MAX_FONT_SIZE 7 /* Purple maximum font size */
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
861 #define POINTS_PER_INCH 72 /* How many pt's in an inch */
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
862
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
863 /** Convert typographical font point size to HTML font size.
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
864 * Based on libpurple/gtkimhtml.c */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
865 static guint
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
866 msim_point_to_purple_size(MsimSession *session, guint point)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
867 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
868 guint size, this_point, base;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
869 gdouble scale;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
870
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
871 base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
872
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
873 for (size = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
874 size < sizeof(_font_scale) / sizeof(_font_scale[0]);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
875 ++size) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
876 scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
877 this_point = (guint)msim_round(scale * base);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
878
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
879 if (this_point >= point) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
880 purple_debug_info("msim", "msim_point_to_purple_size: %d pt -> size=%d\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
881 point, size);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
882 return size;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
883 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
884 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
885
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
886 /* No HTML font size was this big; return largest possible. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
887 return this_point;
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
888 }
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
889
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
890 /** Convert HTML font size to point size. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
891 static guint
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
892 msim_purple_size_to_point(MsimSession *session, guint size)
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
893 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
894 gdouble scale;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
895 guint point;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
896 guint base;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
897
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
898 scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
899
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
900 base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
901
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
902 point = (guint)msim_round(scale * base);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
903
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
904 purple_debug_info("msim", "msim_purple_size_to_point: size=%d -> %d pt\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
905 size, point);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
906
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
907 return point;
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
908 }
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
909
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
910 /** Convert a msim markup font pixel height to the more usual point size, for incoming messages. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
911 static guint
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
912 msim_height_to_point(MsimSession *session, guint height)
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
913 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
914 guint dpi;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
915
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
916 dpi = purple_account_get_int(session->account, "port", MSIM_DEFAULT_DPI);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
917
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
918 return (guint)msim_round((POINTS_PER_INCH * 1. / dpi) * height);
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
919
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
920 /* See also: libpurple/protocols/bonjour/jabber.c
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
921 * _font_size_ichat_to_purple */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
922 }
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
923
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
924 /** Convert point size to msim pixel height font size specification, for outgoing messages. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
925 static guint
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
926 msim_point_to_height(MsimSession *session, guint point)
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
927 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
928 guint dpi;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
929
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
930 dpi = purple_account_get_int(session->account, "port", MSIM_DEFAULT_DPI);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
931
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
932 return (guint)msim_round((dpi * 1. / POINTS_PER_INCH) * point);
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
933 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
934
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
935 /** Convert the msim markup <f> (font) tag into HTML. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
936 static void
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
937 msim_markup_f_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
938 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
939 const gchar *face, *height_str, *decor_str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
940 GString *gs_end, *gs_begin;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
941 guint decor, height;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
942
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
943 face = xmlnode_get_attrib(root, "f");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
944 height_str = xmlnode_get_attrib(root, "h");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
945 decor_str = xmlnode_get_attrib(root, "s");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
946
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
947 if (height_str) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
948 height = atol(height_str);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
949 } else {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
950 height = 12;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
951 }
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
952
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
953 if (decor_str) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
954 decor = atol(decor_str);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
955 } else {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
956 decor = 0;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
957 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
958
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
959 gs_begin = g_string_new("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
960 /* TODO: get font size working */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
961 if (height && !face) {
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
962 g_string_printf(gs_begin, "<font size='%d'>",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
963 msim_point_to_purple_size(session, msim_height_to_point(session, height)));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
964 } else if (height && face) {
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
965 g_string_printf(gs_begin, "<font face='%s' size='%d'>", face,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
966 msim_point_to_purple_size(session, msim_height_to_point(session, height)));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
967 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
968 g_string_printf(gs_begin, "<font>");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
969 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
970
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
971 /* No support for font-size CSS? */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
972 /* g_string_printf(gs_begin, "<span style='font-family: %s; font-size: %dpt'>", face,
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
973 msim_height_to_point(height)); */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
974
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
975 gs_end = g_string_new("</font>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
976
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
977 if (decor & MSIM_TEXT_BOLD) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
978 g_string_append(gs_begin, "<b>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
979 g_string_prepend(gs_end, "</b>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
980 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
981
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
982 if (decor & MSIM_TEXT_ITALIC) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
983 g_string_append(gs_begin, "<i>");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
984 g_string_append(gs_end, "</i>");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
985 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
986
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
987 if (decor & MSIM_TEXT_UNDERLINE) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
988 g_string_append(gs_begin, "<u>");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
989 g_string_append(gs_end, "</u>");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
990 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
991
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
992
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
993 *begin = gs_begin->str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
994 *end = gs_end->str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
995 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
996
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
997 /** Convert a msim markup color to a color suitable for libpurple.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
998 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
999 * @param msim Either a color name, or an rgb(x,y,z) code.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1000 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1001 * @return A new string, either a color name or #rrggbb code. Must g_free().
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1002 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1003 static char *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1004 msim_color_to_purple(const char *msim)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1005 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1006 guint red, green, blue;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1007
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1008 if (!msim) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1009 return g_strdup("black");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1010 }
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1011
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1012 if (sscanf(msim, "rgb(%d,%d,%d)", &red, &green, &blue) != 3) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1013 /* Color name. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1014 return g_strdup(msim);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1015 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1016 /* TODO: rgba (alpha). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1017
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1018 return g_strdup_printf("#%.2x%.2x%.2x", red, green, blue);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1019 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1020
18904
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1021 /** Convert the msim markup <a> (anchor) tag into HTML. */
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1022 static void
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1023 msim_markup_a_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1024 {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1025 const gchar *href;
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1026
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1027 href = xmlnode_get_attrib(root, "h");
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1028 if (!href) {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1029 href = "";
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1030 }
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1031
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1032 *begin = g_strdup_printf("<a href=\"%s\">%s", href, href);
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1033 *end = g_strdup("</a>");
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1034 }
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1035
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1036 /** Convert the msim markup <p> (paragraph) tag into HTML. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1037 static void
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1038 msim_markup_p_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1039 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1040 /* Just pass through unchanged.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1041 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1042 * Note: attributes currently aren't passed, if there are any. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1043 *begin = g_strdup("<p>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1044 *end = g_strdup("</p>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1045 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1046
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1047 /** Convert the msim markup <c> tag (text color) into HTML. TODO: Test */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1048 static void
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1049 msim_markup_c_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1050 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1051 const gchar *color;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1052 gchar *purple_color;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1053
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1054 color = xmlnode_get_attrib(root, "v");
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1055 if (!color) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1056 purple_debug_info("msim", "msim_markup_c_to_html: <c> tag w/o v attr");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1057 *begin = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1058 *end = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1059 /* TODO: log as unrecognized */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1060 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1061 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1062
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1063 purple_color = msim_color_to_purple(color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1064
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1065 *begin = g_strdup_printf("<font color='%s'>", purple_color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1066
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1067 g_free(purple_color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1068
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1069 /* *begin = g_strdup_printf("<span style='color: %s'>", color); */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1070 *end = g_strdup("</font>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1071 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1072
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1073 /** Convert the msim markup <b> tag (background color) into HTML. TODO: Test */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1074 static void
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1075 msim_markup_b_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1076 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1077 const gchar *color;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1078 gchar *purple_color;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1079
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1080 color = xmlnode_get_attrib(root, "v");
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1081 if (!color) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1082 *begin = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1083 *end = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1084 purple_debug_info("msim", "msim_markup_b_to_html: <b> w/o v attr");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1085 /* TODO: log as unrecognized. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1086 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1087 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1088
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1089 purple_color = msim_color_to_purple(color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1090
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1091 /* TODO: find out how to set background color. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1092 *begin = g_strdup_printf("<span style='background-color: %s'>",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1093 purple_color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1094 g_free(purple_color);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1095
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1096 *end = g_strdup("</p>");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1097 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1098
17956
60f40fc52aa4 Support emoticons on incoming messages, approximating MySpaceIM's smileys
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17955
diff changeset
1099 /** Convert the msim markup <i> tag (emoticon image) into HTML. */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1100 static void
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1101 msim_markup_i_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1102 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1103 const gchar *name;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1104 guint i;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1105 struct MSIM_EMOTICON *emote;
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1106
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1107 name = xmlnode_get_attrib(root, "n");
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1108 if (!name) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1109 purple_debug_info("msim", "msim_markup_i_to_html: <i> w/o n");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1110 *begin = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1111 *end = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1112 /* TODO: log as unrecognized */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1113 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1114 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1115
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1116 /* Find and use canonical form of smiley symbol. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1117 for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) {
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1118 if (!strcmp(name, emote->name)) {
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1119 *begin = g_strdup(emote->symbol);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1120 *end = g_strdup("");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1121 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1122 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1123 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1124
18903
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1125 /* Couldn't find it, sorry. Try to degrade gracefully. */
3159f259bbe4 Support all emoticons used in the official MySpaceIM client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18899
diff changeset
1126 *begin = g_strdup_printf("**%s**", name);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1127 *end = g_strdup("");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1128 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1129
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1130 /** Convert an individual msim markup tag to HTML. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1131 static void
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1132 msim_markup_tag_to_html(MsimSession *session, xmlnode *root, gchar **begin,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1133 gchar **end)
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1134 {
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1135 if (!strcmp(root->name, "f")) {
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1136 msim_markup_f_to_html(session, root, begin, end);
18904
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1137 } else if (!strcmp(root->name, "a")) {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1138 msim_markup_a_to_html(session, root, begin, end);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1139 } else if (!strcmp(root->name, "p")) {
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1140 msim_markup_p_to_html(session, root, begin, end);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1141 } else if (!strcmp(root->name, "c")) {
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1142 msim_markup_c_to_html(session, root, begin, end);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1143 } else if (!strcmp(root->name, "b")) {
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1144 msim_markup_b_to_html(session, root, begin, end);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1145 } else if (!strcmp(root->name, "i")) {
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1146 msim_markup_i_to_html(session, root, begin, end);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1147 } else {
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1148 purple_debug_info("msim", "msim_markup_tag_to_html: "
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1149 "unknown tag name=%s, ignoring",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1150 (root && root->name) ? root->name : "(NULL)");
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1151 *begin = g_strdup("");
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1152 *end = g_strdup("");
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1153 }
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1154 }
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1155
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1156 /** Convert an individual HTML tag to msim markup. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1157 static void
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1158 html_tag_to_msim_markup(MsimSession *session, xmlnode *root, gchar **begin,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1159 gchar **end)
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1160 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1161 /* TODO: Coalesce nested tags into one <f> tag!
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1162 * Currently, the 's' value will be overwritten when b/i/u is nested
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1163 * within another one, and only the inner-most formatting will be
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1164 * applied to the text. */
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1165 if (!strcmp(root->name, "root")) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1166 *begin = g_strdup("");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1167 *end = g_strdup("");
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1168 } else if (!strcmp(root->name, "b") || !strcmp(root->name, "B")) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1169 *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_BOLD);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1170 *end = g_strdup("</f>");
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1171 } else if (!strcmp(root->name, "i") || !strcmp(root->name, "I")) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1172 *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_ITALIC);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1173 *end = g_strdup("</f>");
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1174 } else if (!strcmp(root->name, "u") || !strcmp(root->name, "U")) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1175 *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_UNDERLINE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1176 *end = g_strdup("</f>");
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1177 } else if (!strcmp(root->name, "a") || !strcmp(root->name, "A")) {
18904
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1178 const gchar *href, *link_text;
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1179
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1180 href = xmlnode_get_attrib(root, "href");
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1181
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1182 if (!href) {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1183 href = xmlnode_get_attrib(root, "HREF");
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1184 }
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1185
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1186 link_text = xmlnode_get_data(root);
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1187
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1188 if (href) {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1189 if (!strcmp(link_text, href)) {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1190 /* Purple gives us: <a href="URL">URL</a>
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1191 * Translate to <a h='URL' />
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1192 * Displayed as text of URL with link to URL
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1193 */
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1194 *begin = g_strdup_printf("<a h='%s' />", href);
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1195 } else {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1196 /* But if we get: <a href="URL">text</a>
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1197 * Translate to: text: <a h='URL' />
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1198 *
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1199 * Because official client only supports self-closed <a>
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1200 * tags; you can't change the link text.
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1201 */
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1202 *begin = g_strdup_printf("%s: <a h='%s' />", link_text, href);
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1203 }
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1204 } else {
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1205 *begin = g_strdup("<a />");
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1206 }
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1207
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1208 /* Sorry, kid. MySpace doesn't support you within <a> tags. */
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1209 xmlnode_free(root->child);
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1210 root->child = NULL;
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1211
da2f37d232a9 Support sending and receiving hyperlinks.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18903
diff changeset
1212 *end = g_strdup("");
18907
1a11b26fcb11 Replace non-portable stricmp() with two calls to strcmp(), one uppercase and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18905
diff changeset
1213 } else if (!strcmp(root->name, "font") || !strcmp(root->name, "FONT")) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1214 const gchar *size;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1215 const gchar *face;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1216
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1217 size = xmlnode_get_attrib(root, "size");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1218 face = xmlnode_get_attrib(root, "face");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1219
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1220 if (face && size) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1221 *begin = g_strdup_printf("<f f='%s' h='%d'>", face,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1222 msim_point_to_height(session,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1223 msim_purple_size_to_point(session, atoi(size))));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1224 } else if (face) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1225 *begin = g_strdup_printf("<f f='%s'>", face);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1226 } else if (size) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1227 *begin = g_strdup_printf("<f h='%d'>",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1228 msim_point_to_height(session,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1229 msim_purple_size_to_point(session, atoi(size))));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1230 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1231 *begin = g_strdup("<f>");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1232 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1233
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1234 *end = g_strdup("</f>");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1235
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1236 /* TODO: color (bg uses <body>), emoticons */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1237 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1238 *begin = g_strdup_printf("[%s]", root->name);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1239 *end = g_strdup_printf("[/%s]", root->name);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1240 }
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1241 }
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1242
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1243 /** Convert an xmlnode of msim markup or HTML to an HTML string or msim markup.
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1244 *
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1245 * @param f Function to convert tags.
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1246 *
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1247 * @return An HTML string. Caller frees.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1248 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1249 static gchar *
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1250 msim_convert_xmlnode(MsimSession *session, xmlnode *root, MSIM_XMLNODE_CONVERT f)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1251 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1252 xmlnode *node;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1253 gchar *begin, *inner, *end;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1254 GString *final;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1255
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1256 if (!root || !root->name) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1257 return g_strdup("");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1258 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1259
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1260 purple_debug_info("msim", "msim_convert_xmlnode: got root=%s\n",
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1261 root->name);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1262
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1263 begin = inner = end = NULL;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1264
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1265 final = g_string_new("");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1266
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1267 f(session, root, &begin, &end);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1268
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1269 g_string_append(final, begin);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1270
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1271 /* Loop over all child nodes. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1272 for (node = root->child; node != NULL; node = node->next) {
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1273 switch (node->type) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1274 case XMLNODE_TYPE_ATTRIB:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1275 /* Attributes handled above. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1276 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1277
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1278 case XMLNODE_TYPE_TAG:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1279 /* A tag or tag with attributes. Recursively descend. */
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1280 inner = msim_convert_xmlnode(session, node, f);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1281 g_return_val_if_fail(inner != NULL, NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1282
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1283 purple_debug_info("msim", " ** node name=%s\n",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1284 (node && node->name) ? node->name : "(NULL)");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1285 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1286
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1287 case XMLNODE_TYPE_DATA:
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1288 /* Literal text. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1289 inner = g_new0(char, node->data_sz + 1);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1290 strncpy(inner, node->data, node->data_sz);
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
1291 inner[node->data_sz] = 0;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1292
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1293 purple_debug_info("msim", " ** node data=%s\n",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1294 inner ? inner : "(NULL)");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1295 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1296
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1297 default:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1298 purple_debug_info("msim",
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1299 "msim_convert_xmlnode: strange node\n");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1300 inner = g_strdup("");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1301 }
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
1302
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1303 if (inner) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1304 g_string_append(final, inner);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1305 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1306 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1307
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1308 /* TODO: Note that msim counts each piece of text enclosed by <f> as
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1309 * a paragraph and will display each on its own line. You actually have
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1310 * to _nest_ <f> tags to intersperse different text in one paragraph!
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1311 * Comment out this line below to see. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1312 g_string_append(final, end);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1313
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1314 purple_debug_info("msim", "msim_markup_xmlnode_to_gtkhtml: RETURNING %s\n",
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1315 (final && final->str) ? final->str : "(NULL)");
17946
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
1316
b3e971b375b5 Support font sizes in sending and receiving formatted text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17945
diff changeset
1317 return final->str;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1318 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1319
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1320 /** Convert XML to something based on MSIM_XMLNODE_CONVERT. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1321 static gchar *
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1322 msim_convert_xml(MsimSession *session, const gchar *raw, MSIM_XMLNODE_CONVERT f)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1323 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1324 xmlnode *root;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1325 gchar *str;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1326 gchar *enclosed_raw;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1327
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1328 g_return_val_if_fail(raw != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1329
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1330 /* Enclose text in one root tag, to try to make it valid XML for parsing. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1331 enclosed_raw = g_strconcat("<root>", raw, "</root>", NULL);
17958
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
1332
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
1333 root = xmlnode_from_str(enclosed_raw, -1);
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
1334
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1335 if (!root) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1336 purple_debug_info("msim", "msim_markup_to_html: couldn't parse "
17958
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
1337 "%s as XML, returning raw: %s\n", enclosed_raw, raw);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1338 /* TODO: msim_unrecognized */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1339 g_free(enclosed_raw);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1340 return g_strdup(raw);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1341 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1342
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1343 g_free(enclosed_raw);
17958
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
1344
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1345 str = msim_convert_xmlnode(session, root, f);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1346 g_return_val_if_fail(str != NULL, NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1347 purple_debug_info("msim", "msim_markup_to_html: returning %s\n", str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1348
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1349 xmlnode_free(root);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1350
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1351 return str;
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1352 }
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1353
17957
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1354 /** Convert plaintext smileys to <i> markup tags.
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1355 *
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1356 * @param before Original text with ASCII smileys. Will be freed.
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1357 * @return A new string with <i> tags, if applicable. Must be g_free()'d.
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1358 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1359 static gchar *
17957
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1360 msim_convert_smileys_to_markup(gchar *before)
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1361 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1362 gchar *old, *new, *replacement;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1363 guint i;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1364 struct MSIM_EMOTICON *emote;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1365
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1366 old = before;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1367 new = NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1368
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1369 for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1370 gchar *name, *symbol;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1371
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1372 name = emote->name;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1373 symbol = emote->symbol;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1374
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1375 replacement = g_strdup_printf("<i n=\"%s\"/>", name);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1376
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1377 purple_debug_info("msim", "msim_convert_smileys_to_markup: %s->%s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1378 symbol ? symbol : "(NULL)",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1379 replacement ? replacement : "(NULL)");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1380 new = str_replace(old, symbol, replacement);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1381
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1382 g_free(replacement);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1383 g_free(old);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1384
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1385 old = new;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1386 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1387
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1388 return new;
17957
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1389 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1390
17957
3bd88cbdd204 Add support for sending emoticons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17956
diff changeset
1391
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1392 /** High-level function to convert MySpaceIM markup to Purple (HTML) markup.
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1393 *
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1394 * @return Purple markup string, must be g_free()'d. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1395 static gchar *
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1396 msim_markup_to_html(MsimSession *session, const gchar *raw)
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1397 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1398 return msim_convert_xml(session, raw,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1399 (MSIM_XMLNODE_CONVERT)(msim_markup_tag_to_html));
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1400 }
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1401
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1402 /** High-level function to convert Purple (HTML) to MySpaceIM markup.
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1403 *
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1404 * @return HTML markup string, must be g_free()'d. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1405 static gchar *
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1406 html_to_msim_markup(MsimSession *session, const gchar *raw)
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17936
diff changeset
1407 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1408 gchar *markup;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1409
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1410 markup = msim_convert_xml(session, raw,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1411 (MSIM_XMLNODE_CONVERT)(html_tag_to_msim_markup));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1412
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1413 if (purple_account_get_bool(session->account, "emoticons", TRUE)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1414 /* Frees markup and allocates a new one. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1415 markup = msim_convert_smileys_to_markup(markup);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1416 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1417
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1418 return markup;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1419 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1420
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1421 /** Get the MsimUser from a PurpleBuddy, creating it if needed. */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1422 static MsimUser *
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1423 msim_get_user_from_buddy(PurpleBuddy *buddy)
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1424 {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1425 MsimUser *user;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1426
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1427 if (!buddy) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1428 return NULL;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1429 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1430
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1431 if (!buddy->proto_data) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1432 /* TODO: where is this freed? */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1433 user = g_new0(MsimUser, 1);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1434 user->buddy = buddy;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1435 buddy->proto_data = (gpointer)user;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1436 purple_debug_info("msim_get_user_from_buddy",
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1437 "creating new user for %s to %X\n",
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1438 buddy->name, buddy->proto_data);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1439 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1440
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1441 user = (MsimUser *)(buddy->proto_data);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1442
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1443 return user;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1444 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1445
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1446 /** Find and return an MsimUser * representing a user on the buddy list, or NULL. */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1447 static MsimUser *
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1448 msim_find_user(MsimSession *session, const gchar *username)
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1449 {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1450 PurpleBuddy *buddy;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1451 MsimUser *user;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1452
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1453 buddy = purple_find_buddy(session->account, username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1454 if (!buddy) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1455 return NULL;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1456 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1457
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1458 user = msim_get_user_from_buddy(buddy);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1459
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1460 return user;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1461 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1462
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1463
17955
9e8943111022 Show official client build in buddy profiles.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17954
diff changeset
1464 /** Record the client version in the buddy list, from an incoming message. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1465 static gboolean
17955
9e8943111022 Show official client build in buddy profiles.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17954
diff changeset
1466 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
9e8943111022 Show official client build in buddy profiles.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17954
diff changeset
1467 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1468 gchar *username, *cv;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1469 gboolean ret;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1470 MsimUser *user;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1471
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1472 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1473 cv = msim_msg_get_string(msg, "cv");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1474
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1475 g_return_val_if_fail(username != NULL, FALSE);
18908
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
1476 if (!cv) {
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
1477 /* No client version to record, don't worry about it. */
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
1478 return FALSE;
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
1479 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1480
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1481 user = msim_find_user(session, username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1482
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1483 if (user) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1484 user->client_cv = atol(cv);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1485 ret = TRUE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1486 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1487 ret = FALSE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1488 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1489
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1490 g_free(username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1491 g_free(cv);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1492
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1493 return ret;
17955
9e8943111022 Show official client build in buddy profiles.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17954
diff changeset
1494 }
9e8943111022 Show official client build in buddy profiles.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17954
diff changeset
1495
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1496 /** Handle an incoming buddy message. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1497 static gboolean
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1498 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1499 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1500 guint bm;
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1501
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1502 bm = msim_msg_get_integer(msg, "bm");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1503
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1504 msim_incoming_bm_record_cv(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1505
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1506 switch (bm) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1507 case MSIM_BM_STATUS:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1508 return msim_incoming_status(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1509 case MSIM_BM_INSTANT:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1510 return msim_incoming_im(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1511 case MSIM_BM_ACTION:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1512 return msim_incoming_action(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1513 case MSIM_BM_MEDIA:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1514 return msim_incoming_media(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1515 case MSIM_BM_UNOFFICIAL_CLIENT:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1516 return msim_incoming_unofficial_client(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1517 default:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1518 /* Not really an IM, but show it for informational
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1519 * purposes during development. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1520 return msim_incoming_im(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1521 }
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1522 }
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1523
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1524 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1525 * Handle an incoming instant message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1526 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1527 * @param session The session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1528 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1529 * Should also contain username in _username from preprocessing.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1530 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1531 * @return TRUE if successful.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1532 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1533 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1534 msim_incoming_im(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1535 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1536 gchar *username, *msg_msim_markup, *msg_purple_markup;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1537
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1538 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1539 g_return_val_if_fail(msg != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1540
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1541 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1542 g_return_val_if_fail(username != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1543
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1544 msg_msim_markup = msim_msg_get_string(msg, "msg");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1545 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1546
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
1547 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1548 g_free(msg_msim_markup);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1549
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1550 serv_got_im(session->gc, username, msg_purple_markup,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1551 PURPLE_MESSAGE_RECV, time(NULL));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1552
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1553 g_free(username);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1554 g_free(msg_purple_markup);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1555
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1556 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1557 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1558
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1559 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1560 * Process unrecognized information.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1561 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1562 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1563 * @param msg An MsimMessage that was unrecognized, or NULL.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1564 * @param note Information on what was unrecognized, or NULL.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1565 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1566 static void
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1567 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1568 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1569 /* TODO: Some more context, outwardly equivalent to a backtrace,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1570 * for helping figure out what this msg is for. What was going on?
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1571 * But not too much information so that a user
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1572 * posting this dump reveals confidential information.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1573 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1574
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1575 /* TODO: dump unknown msgs to file, so user can send them to me
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1576 * if they wish, to help add support for new messages (inspired
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1577 * by Alexandr Shutko, who maintains OSCAR protocol documentation). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1578
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1579 purple_debug_info("msim", "Unrecognized data on account for %s\n",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1580 session->account->username ? session->account->username
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1581 : "(NULL)");
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1582 if (note) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1583 purple_debug_info("msim", "(Note: %s)\n", note);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1584 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1585
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1586 if (msg) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1587 msim_msg_dump("Unrecognized message dump: %s\n", msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1588 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1589 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1590
17962
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1591 /** Process an incoming zap. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1592 static gboolean
17962
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1593 msim_incoming_zap(MsimSession *session, MsimMessage *msg)
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1594 {
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
1595 gchar *msg_text, *username, *zap_text;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1596 gint zap;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1597 const gchar *zap_past_tense[10];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1598
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1599 zap_past_tense[0] = _("zapped");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1600 zap_past_tense[1] = _("whacked");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1601 zap_past_tense[2] = _("torched");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1602 zap_past_tense[3] = _("smooched");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1603 zap_past_tense[4] = _("hugged");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1604 zap_past_tense[5] = _("bslapped");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1605 zap_past_tense[6] = _("goosed");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1606 zap_past_tense[7] = _("hi-fived");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1607 zap_past_tense[8] = _("punk'd");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1608 zap_past_tense[9] = _("raspberried");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1609
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1610 msg_text = msim_msg_get_string(msg, "msg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1611 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1612
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1613 g_return_val_if_fail(msg_text != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1614 g_return_val_if_fail(username != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1615
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1616 g_return_val_if_fail(sscanf(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", &zap) == 1, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1617
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1618 zap = CLAMP(zap, 0, sizeof(zap_past_tense) / sizeof(zap_past_tense[0]));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1619
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1620 zap_text = g_strdup_printf(_("*** You have been %s! ***"), zap_past_tense[zap]);
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
1621
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1622 serv_got_im(session->gc, username, zap_text,
17962
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1623 PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_SYSTEM, time(NULL));
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
1624
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1625 g_free(zap_text);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1626 g_free(msg_text);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1627 g_free(username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1628
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1629 return TRUE;
17962
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1630 }
8e351e08aba0 Support incoming zaps.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17961
diff changeset
1631
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1632 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1633 * Handle an incoming action message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1634 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1635 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1636 * @param msg
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1637 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1638 * @return TRUE if successful.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1639 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1640 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1641 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1642 msim_incoming_action(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1643 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1644 gchar *msg_text, *username;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1645 gboolean rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1646
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1647 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1648 g_return_val_if_fail(msg != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1649
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1650 msg_text = msim_msg_get_string(msg, "msg");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1651 g_return_val_if_fail(msg_text != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1652
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1653 username = msim_msg_get_string(msg, "_username");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1654 g_return_val_if_fail(username != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1655
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1656 purple_debug_info("msim", "msim_incoming_action: action <%s> from <%d>\n",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1657 msg_text, username);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1658
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
1659 if (strcmp(msg_text, "%typing%") == 0) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1660 /* TODO: find out if msim repeatedly sends typing messages, so we can
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1661 * give it a timeout. Right now, there does seem to be an inordinately
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1662 * amount of time between typing stopped-typing notifications. */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1663 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1664 rc = TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1665 } else if (strcmp(msg_text, "%stoptyping%") == 0) {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1666 serv_got_typing_stopped(session->gc, username);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1667 rc = TRUE;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1668 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1669 rc = msim_incoming_zap(session, msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1670 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1671 msim_unrecognized(session, msg,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1672 "got to msim_incoming_action but unrecognized value for 'msg'");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1673 rc = FALSE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1674 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1675
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1676 g_free(msg_text);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1677 g_free(username);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1678
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1679 return rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1680 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1681
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1682 /* Process an incoming media (buddy icon) message. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1683 static gboolean
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1684 msim_incoming_media(MsimSession *session, MsimMessage *msg)
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1685 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1686 gchar *username, *text;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1687
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1688 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1689 text = msim_msg_get_string(msg, "msg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1690
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1691 g_return_val_if_fail(username != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1692 g_return_val_if_fail(text != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1693
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1694 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1695
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1696 /* Media messages are sent when the user opens a window to someone.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1697 * Tell libpurple they started typing and stopped typing, to inform the Psychic
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1698 * Mode plugin so it too can open a window to the user. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1699 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1700 serv_got_typing_stopped(session->gc, username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1701
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1702 g_free(username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1703
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1704 return TRUE;
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1705 }
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1706
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1707 /* Process an incoming "unofficial client" message. The plugin for
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1708 * Miranda IM sends this message with the plugin information. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1709 static gboolean
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1710 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1711 {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1712 MsimUser *user;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1713 gchar *username, *client_info;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1714
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1715 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1716 client_info = msim_msg_get_string(msg, "msg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1717
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1718 g_return_val_if_fail(username != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1719 g_return_val_if_fail(client_info != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1720
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1721 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1722 username, client_info);
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1723
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1724 user = msim_find_user(session, username);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1725
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1726 g_return_val_if_fail(user != NULL, FALSE);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1727
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1728 if (user->client_info) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1729 g_free(user->client_info);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1730 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1731 user->client_info = client_info;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1732
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1733 g_free(username);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1734 /* Do not free client_info - the MsimUser now owns it. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1735
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1736 return TRUE;
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1737 }
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1738
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1739
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1740 #ifdef MSIM_SEND_CLIENT_VERSION
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1741 /** Send our client version to another unofficial client that understands it. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1742 static gboolean
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1743 msim_send_unofficial_client(MsimSession *session, gchar *username)
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1744 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1745 gchar *our_info;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1746 gboolean ret;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1747
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1748 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1749 PURPLE_MAJOR_VERSION,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1750 PURPLE_MINOR_VERSION,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1751 PURPLE_MICRO_VERSION,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1752 MSIM_PRPL_VERSION_STRING);
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1753
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1754 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1755
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1756 return ret;
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1757 }
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
1758 #endif
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1759
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1760 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1761 * Handle when our user starts or stops typing to another user.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1762 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1763 * @param gc
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1764 * @param name The buddy name to which our user is typing to
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1765 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1766 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1767 * @return 0
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1768 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1769 unsigned int
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1770 msim_send_typing(PurpleConnection *gc, const gchar *name,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1771 PurpleTypingState state)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1772 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1773 const gchar *typing_str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1774 MsimSession *session;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1775
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1776 g_return_val_if_fail(gc != NULL, 0);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1777 g_return_val_if_fail(name != NULL, 0);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1778
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1779 session = (MsimSession *)gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1780
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1781 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1782
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1783 switch (state) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1784 case PURPLE_TYPING:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1785 typing_str = "%typing%";
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1786 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1787
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1788 case PURPLE_TYPED:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1789 case PURPLE_NOT_TYPING:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1790 default:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1791 typing_str = "%stoptyping%";
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1792 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1793 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1794
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1795 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1796 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1797 return 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1798 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1799
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1800 /** Format the "now playing" indicator, showing the artist and song.
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1801 * @return Return a new string (must be g_free()'d), or NULL.
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1802 */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1803 static gchar *
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1804 msim_format_now_playing(gchar *band, gchar *song)
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1805 {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1806 if ((band && strlen(band)) || (song && strlen(song))) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1807 return g_strdup_printf("%s - %s",
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1808 (band && strlen(band)) ? band : "Unknown Artist",
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1809 (song && strlen(song)) ? song : "Unknown Song");
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1810 } else {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1811 return NULL;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1812 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1813 }
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1814
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1815 /** Append user information to a PurpleNotifyUserInfo, given an MsimUser.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1816 * Used by msim_tooltip_text() and msim_get_info_cb() to show a user's profile.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1817 */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1818 static void
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1819 msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full)
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1820 {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1821 gchar *str;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1822 guint uid;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1823 guint cv;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1824
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1825 /* Useful to identify the account the tooltip refers to.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1826 * Other prpls show this. */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1827 if (user->username) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1828 purple_notify_user_info_add_pair(user_info, _("User"), user->username);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1829 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1830
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1831 uid = purple_blist_node_get_int(&user->buddy->node, "UserID");
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1832
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1833 if (full) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1834 purple_notify_user_info_add_pair(user_info, _("User ID"), g_strdup_printf("%d", uid));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1835 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1836
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1837
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1838 /* a/s/l...the vitals */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1839 if (user->age) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1840 purple_notify_user_info_add_pair(user_info, _("Age"),
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1841 g_strdup_printf("%d", user->age));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1842 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1843
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1844 if (user->gender && strlen(user->gender)) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1845 purple_notify_user_info_add_pair(user_info, _("Gender"), user->gender);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1846 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1847
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1848 if (user->location && strlen(user->location)) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1849 purple_notify_user_info_add_pair(user_info, _("Location"), user->location);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1850 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1851
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1852 /* Other information */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1853 if (user->headline && strlen(user->headline)) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1854 purple_notify_user_info_add_pair(user_info, _("Headline"), user->headline);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1855 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1856
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1857 str = msim_format_now_playing(user->band_name, user->song_name);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1858 if (str && strlen(str)) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1859 purple_notify_user_info_add_pair(user_info, _("Song"), str);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1860 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1861
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1862 /* Note: total friends only available if looked up by uid, not username. */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1863 if (user->total_friends) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1864 purple_notify_user_info_add_pair(user_info, _("Total Friends"),
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1865 g_strdup_printf("%d", user->total_friends));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1866 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1867
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1868 if (full) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1869 /* Client information */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1870
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1871 str = user->client_info;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1872 cv = user->client_cv;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1873
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1874 if (str && cv != 0) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1875 purple_notify_user_info_add_pair(user_info, _("Client Version"),
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1876 g_strdup_printf("%s (build %d)", str, cv));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1877 } else if (str) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1878 purple_notify_user_info_add_pair(user_info, _("Client Version"),
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1879 g_strdup(str));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1880 } else if (cv) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1881 purple_notify_user_info_add_pair(user_info, _("Client Version"),
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1882 g_strdup_printf("Build %d", cv));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1883 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1884 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1885 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1886
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1887 /** Callback for msim_get_info(), for when user info is received. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1888 static void
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
1889 msim_get_info_cb(MsimSession *session, MsimMessage *user_info_msg,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1890 gpointer data)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1891 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1892 MsimMessage *msg;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1893 gchar *username;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1894 PurpleNotifyUserInfo *user_info;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1895 MsimUser *user;
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1896 gboolean temporary_user;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1897
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1898 g_return_if_fail(MSIM_SESSION_VALID(session));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1899
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1900 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1901 orthogonality. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1902 msg = (MsimMessage *)data;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1903 g_return_if_fail(msg != NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1904
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1905 username = msim_msg_get_string(msg, "user");
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1906 if (!username) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1907 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1908 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1909 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1910
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1911 msim_msg_free(msg);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1912 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1913
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1914 user = msim_find_user(session, username);
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1915
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1916 if (!user) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1917 /* User isn't on blist, create a temporary user to store info. */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1918 temporary_user = TRUE;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1919 user = g_new0(MsimUser, 1);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1920 } else {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1921 temporary_user = FALSE;
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1922 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1923
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1924 /* Update user structure with new information */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1925 msim_store_user_info(session, user_info_msg, user);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1926
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1927 user_info = purple_notify_user_info_new();
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1928
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1929 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1930 msim_append_user_info(session, user_info, user, TRUE);
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
1931
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1932 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1933 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1934
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1935 purple_notify_user_info_destroy(user_info);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1936 /* TODO: do not free username, since it will be used by user_info? */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1937
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1938 if (temporary_user) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1939 g_free(user->client_info);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1940 g_free(user->gender);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1941 g_free(user->location);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1942 g_free(user->headline);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1943 g_free(user->display_name);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1944 g_free(user->username);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1945 g_free(user->band_name);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1946 g_free(user->song_name);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1947 g_free(user->image_url);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1948 g_free(user);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
1949 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1950
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1951 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1952
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1953 /** Retrieve a user's profile.
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1954 * @param username Username, user ID, or email address to lookup.
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1955 */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1956 void
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1957 msim_get_info(PurpleConnection *gc, const gchar *username)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1958 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1959 MsimSession *session;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1960 MsimUser *user;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1961 guint uid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1962 gchar *user_to_lookup;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1963 MsimMessage *user_msg;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1964
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1965 g_return_if_fail(gc != NULL);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1966 g_return_if_fail(username != NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1967
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1968 session = (MsimSession *)gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1969
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
1970 g_return_if_fail(MSIM_SESSION_VALID(session));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1971
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1972 /* Obtain uid of buddy. */
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1973 user = msim_find_user(session, username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1974
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1975 /* If is on buddy list, lookup by uid since it is faster. */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1976 if (user && (uid = purple_blist_node_get_int(&user->buddy->node, "UserID"))) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1977 user_to_lookup = g_strdup_printf("%d", uid);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1978 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1979 /* Looking up buddy not on blist. Lookup by whatever user entered. */
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1980 user_to_lookup = g_strdup(username);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1981 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1982
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1983 /* Pass the username to msim_get_info_cb(), because since we lookup
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1984 * by userid, the userinfo message will only contain the uid (not
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1985 * the username) but it would be useful to display the username too.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1986 */
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
1987 user_msg = msim_msg_new(
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1988 "user", MSIM_TYPE_STRING, g_strdup(username),
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1989 NULL);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
1990 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1991
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1992 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1993
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1994 g_free(user_to_lookup);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1995 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1996
17945
cf55077a3752 Remove MSIM_FAKE_SELF_ONLINE option, since our own status is actually updated
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17944
diff changeset
1997 /** Set your status - callback for when user manually sets it. */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1998 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
1999 msim_set_status(PurpleAccount *account, PurpleStatus *status)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2000 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2001 PurpleStatusType *type;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2002 MsimSession *session;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2003 guint status_code;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2004 const gchar *statstring;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2005
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2006 session = (MsimSession *)account->gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2007
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2008 g_return_if_fail(MSIM_SESSION_VALID(session));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2009
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2010 type = purple_status_get_type(status);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2011
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
2012 switch (purple_status_type_get_primitive(type)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2013 case PURPLE_STATUS_AVAILABLE:
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2014 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2015 MSIM_STATUS_CODE_ONLINE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2016 status_code = MSIM_STATUS_CODE_ONLINE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2017 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2018
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2019 case PURPLE_STATUS_INVISIBLE:
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2020 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2021 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2022 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2023 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2024
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2025 case PURPLE_STATUS_AWAY:
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2026 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2027 MSIM_STATUS_CODE_AWAY);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2028 status_code = MSIM_STATUS_CODE_AWAY;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2029 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2030
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2031 default:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2032 purple_debug_info("msim", "msim_set_status: unknown "
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2033 "status interpreting as online");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2034 status_code = MSIM_STATUS_CODE_ONLINE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2035 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2036 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2037
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2038 statstring = purple_status_get_attr_string(status, "message");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2039
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2040 if (!statstring) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2041 statstring = g_strdup("");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2042 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2043
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2044 msim_set_status_code(session, status_code, g_strdup(statstring));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2045 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2046
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2047 /** Go idle. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2048 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2049 msim_set_idle(PurpleConnection *gc, int time)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2050 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2051 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2052
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2053 g_return_if_fail(gc != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2054
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2055 session = (MsimSession *)gc->proto_data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2056
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2057 g_return_if_fail(MSIM_SESSION_VALID(session));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2058
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2059 if (time == 0) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2060 /* Going back from idle. In msim, idle is mutually exclusive
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2061 * from the other states (you can only be away or idle, but not
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2062 * both, for example), so by going non-idle I go online.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2063 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2064 /* TODO: find out how to keep old status string? */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2065 msim_set_status_code(session, MSIM_STATUS_CODE_ONLINE, g_strdup(""));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2066 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2067 /* msim doesn't support idle time, so just go idle */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2068 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, g_strdup(""));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2069 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2070 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2071
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2072 /** Set status using an MSIM_STATUS_CODE_* value.
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2073 * @param status_code An MSIM_STATUS_CODE_* value.
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2074 * @param statstring Status string, must be a dynamic string (will be freed by msim_send).
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2075 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2076 static void
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2077 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2078 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2079 g_return_if_fail(MSIM_SESSION_VALID(session));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2080 g_return_if_fail(statstring != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2081
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2082 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2083 status_code, statstring);
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2084
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2085 if (!msim_send(session,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2086 "status", MSIM_TYPE_INTEGER, status_code,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2087 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17942
diff changeset
2088 "statstring", MSIM_TYPE_STRING, statstring,
17939
65cf1785e5bf Fix compile warnings on Unix (missing sentinel and time_t to int typecast).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17938
diff changeset
2089 "locstring", MSIM_TYPE_STRING, g_strdup(""),
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2090 NULL))
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2091 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2092 purple_debug_info("msim", "msim_set_status: failed to set status");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2093 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2094
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2095 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2096
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2097 /** After a uid is resolved to username, tag it with the username and submit for processing.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2098 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2099 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2100 * @param userinfo Response messsage to resolving request.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2101 * @param data MsimMessage *, the message to attach information to.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2102 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2103 static void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2104 msim_incoming_resolved(MsimSession *session, MsimMessage *userinfo,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2105 gpointer data)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2106 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2107 gchar *body_str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2108 GHashTable *body;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2109 gchar *username;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2110 MsimMessage *msg;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2111
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2112 g_return_if_fail(MSIM_SESSION_VALID(session));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2113 g_return_if_fail(userinfo != NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2114
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2115 body_str = msim_msg_get_string(userinfo, "body");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2116 g_return_if_fail(body_str != NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2117 body = msim_parse_body(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2118 g_return_if_fail(body != NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2119 g_free(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2120
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2121 username = g_hash_table_lookup(body, "UserName");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2122 g_return_if_fail(username != NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2123
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
2124
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2125 msg = (MsimMessage *)data;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2126 g_return_if_fail(msg != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2127
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2128 /* TODO: more elegant solution than below. attach whole message? */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2129 /* Special elements name beginning with '_', we'll use internally within the
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
2130 * program (did not come directly from the wire). */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2131 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
2132
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2133 /* TODO: attach more useful information, like ImageURL */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2134
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2135 msim_process(session, msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2136
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2137 /* TODO: Free copy cloned from msim_preprocess_incoming(). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2138 //XXX msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2139 g_hash_table_destroy(body);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2140 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2141
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2142 /* Lookup a username by userid, from buddy list.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2143 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2144 * @param wanted_uid
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2145 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2146 * @return Username of wanted_uid, if on blist, or NULL. Static string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2147 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2148 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2149 static const gchar *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2150 msim_uid2username_from_blist(MsimSession *session, guint wanted_uid)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2151 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2152 GSList *buddies, *cur;
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2153 gchar *ret;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2154
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2155 buddies = purple_find_buddies(session->account, NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2156
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2157 if (!buddies)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2158 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2159 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2160 return NULL;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2161 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2162
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2163 ret = NULL;
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2164
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2165 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2166 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2167 PurpleBuddy *buddy;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2168 guint uid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2169 const gchar *name;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2170
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2171 /* See finch/gnthistory.c */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2172 buddy = cur->data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2173
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2174 uid = purple_blist_node_get_int(&buddy->node, "UserID");
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2175 name = purple_buddy_get_name(buddy);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2176
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2177 if (uid == wanted_uid)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2178 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2179 ret = g_strdup(name);
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2180 break;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2181 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2182 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2183
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2184 g_slist_free(buddies);
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
2185 return ret;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2186 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2187
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2188 /** Preprocess incoming messages, resolving as needed, calling msim_process() when ready to process.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2189 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2190 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2191 * @param msg MsimMessage *, freed by caller.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2192 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2193 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2194 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2195 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2196 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2197 g_return_val_if_fail(msg != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2198
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
2199 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2200 guint uid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2201 const gchar *username;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2202
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2203 /* 'f' = userid message is from, in buddy messages */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2204 uid = msim_msg_get_integer(msg, "f");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2205
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2206 username = msim_uid2username_from_blist(session, uid);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2207
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
2208 if (username) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2209 /* Know username already, use it. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2210 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2211 username);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2212 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2213 return msim_process(session, msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2214
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2215 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2216 gchar *from;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2217
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2218 /* Send lookup request. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2219 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2220 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2221 from = msim_msg_get_string(msg, "f");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2222 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2223 g_free(from);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2224
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2225 /* indeterminate */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2226 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2227 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2228 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2229 /* Nothing to resolve - send directly to processing. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2230 return msim_process(session, msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2231 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2232 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2233
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2234 #ifdef MSIM_USE_KEEPALIVE
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2235 /** Check if the connection is still alive, based on last communication. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2236 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2237 msim_check_alive(gpointer data)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2238 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2239 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2240 time_t delta;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2241 gchar *errmsg;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2242
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2243 session = (MsimSession *)data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2244
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2245 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2246
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2247 delta = time(NULL) - session->last_comm;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2248 //purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2249 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2250 errmsg = g_strdup_printf(_("Connection to server lost (no data received within %d seconds)"), (int)delta);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2251
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2252 purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2253 errmsg, MSIM_KEEPALIVE_INTERVAL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2254 purple_connection_error(session->gc, errmsg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2255
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2256 purple_notify_error(session->gc, NULL, errmsg, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2257
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2258 g_free(errmsg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2259
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2260 return FALSE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2261 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2262
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2263 return TRUE;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2264 }
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2265 #endif
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2266
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
2267 /** Handle mail reply checks. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2268 static void
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
2269 msim_check_inbox_cb(MsimSession *session, MsimMessage *reply, gpointer data)
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2270 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2271 GHashTable *body;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2272 gchar *body_str;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2273 GString *notification;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2274 guint old_inbox_status;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2275 guint i, n;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2276 const gchar *froms[5], *tos[5], *urls[5], *subjects[5];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2277
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2278 /* Three parallel arrays for each new inbox message type. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2279 static const gchar *inbox_keys[] =
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2280 {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2281 "Mail",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2282 "BlogComment",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2283 "ProfileComment",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2284 "FriendRequest",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2285 "PictureComment"
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2286 };
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2287
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2288 static const guint inbox_bits[] =
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2289 {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2290 MSIM_INBOX_MAIL,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2291 MSIM_INBOX_BLOG_COMMENT,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2292 MSIM_INBOX_PROFILE_COMMENT,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2293 MSIM_INBOX_FRIEND_REQUEST,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2294 MSIM_INBOX_PICTURE_COMMENT
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2295 };
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2296
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2297 static const gchar *inbox_urls[] =
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2298 {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2299 "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2300 "http://blog.myspace.com/index.cfm?fuseaction=blog",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2301 "http://home.myspace.com/index.cfm?fuseaction=user",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2302 "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2303 "http://home.myspace.com/index.cfm?fuseaction=user"
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2304 };
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2305
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2306 static const gchar *inbox_text[5];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2307
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2308 /* Can't write _()'d strings in array initializers. Workaround. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2309 inbox_text[0] = _("New mail messages");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2310 inbox_text[1] = _("New blog comments");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2311 inbox_text[2] = _("New profile comments");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2312 inbox_text[3] = _("New friend requests!");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2313 inbox_text[4] = _("New picture comments");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2314
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2315 g_return_if_fail(reply != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2316
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2317 msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2318
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2319 body_str = msim_msg_get_string(reply, "body");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2320 g_return_if_fail(body_str != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2321
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2322 body = msim_parse_body(body_str);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2323 g_free(body_str);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2324
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2325 notification = g_string_new("");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2326
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2327 old_inbox_status = session->inbox_status;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2328
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2329 n = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2330
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2331 for (i = 0; i < sizeof(inbox_keys) / sizeof(inbox_keys[0]); ++i) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2332 const gchar *key;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2333 guint bit;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2334
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2335 key = inbox_keys[i];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2336 bit = inbox_bits[i];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2337
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2338 if (g_hash_table_lookup(body, key)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2339 /* Notify only on when _changes_ from no mail -> has mail
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2340 * (edge triggered) */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2341 if (!(session->inbox_status & bit)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2342 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2343 key ? key : "(NULL)", n);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2344
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2345 subjects[n] = inbox_text[i];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2346 froms[n] = _("MySpace");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2347 tos[n] = session->username;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2348 /* TODO: append token, web challenge, so automatically logs in.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2349 * Would also need to free strings because they won't be static
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2350 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2351 urls[n] = inbox_urls[i];
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2352
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2353 ++n;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2354 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2355 purple_debug_info("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2356 "msim_check_inbox_cb: already notified of %s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2357 key ? key : "(NULL)");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2358 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2359
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2360 session->inbox_status |= bit;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2361 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2362 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2363
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2364 if (n) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2365 purple_debug_info("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2366 "msim_check_inbox_cb: notifying of %d\n", n);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2367
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2368 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2369 purple_notify_emails(session->gc, /* handle */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2370 n, /* count */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2371 TRUE, /* detailed */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2372 subjects, froms, tos, urls,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2373 NULL, /* PurpleNotifyCloseCallback cb */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2374 NULL); /* gpointer user_data */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2375
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2376 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2377
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2378 g_hash_table_destroy(body);
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2379 }
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2380
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2381 /* Send request to check if there is new mail. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2382 static gboolean
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
2383 msim_check_inbox(gpointer data)
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2384 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2385 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2386
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2387 session = (MsimSession *)data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2388
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2389 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2390 g_return_val_if_fail(msim_send(session,
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2391 "persist", MSIM_TYPE_INTEGER, 1,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2392 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2393 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2394 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2395 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2396 "uid", MSIM_TYPE_INTEGER, session->userid,
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2397 "rid", MSIM_TYPE_INTEGER,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2398 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2399 "body", MSIM_TYPE_STRING, g_strdup(""),
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2400 NULL), TRUE);
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2401
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2402 /* Always return true, so that we keep checking for mail. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2403 return TRUE;
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2404 }
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2405
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2406 /** Called when the session key arrives. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2407 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2408 msim_we_are_logged_on(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2409 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2410 MsimMessage *body;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2411
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2412 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2413 g_return_val_if_fail(msg != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2414
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2415 session->sesskey = msim_msg_get_integer(msg, "sesskey");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2416 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2417
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2418 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2419
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2420 /* Comes with: proof,profileid,userid,uniquenick -- all same values
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2421 * some of the time, but can vary. This is our own user ID. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2422 session->userid = msim_msg_get_integer(msg, "userid");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2423
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2424 /* Not sure what profileid is used for. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2425 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2426 msim_unrecognized(session, msg,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2427 "Profile ID didn't match user ID, don't know why");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2428 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2429
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2430 /* We now know are our own username, only after we're logged in..
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2431 * which is weird, but happens because you login with your email
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2432 * address and not username. Will be freed in msim_session_destroy(). */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2433 session->username = msim_msg_get_string(msg, "uniquenick");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2434
18909
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2435 /* The session is now set up, ready to be connected. This emits the
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2436 * signedOn signal, so clients can now do anything with msimprpl, and
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2437 * we're ready for it (session key, userid, username all setup). */
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2438 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2439 purple_connection_set_state(session->gc, PURPLE_CONNECTED);
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2440
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2441
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2442 /* Additional post-connect operations */
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2443
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2444
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2445 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2446 purple_debug_info("msim_we_are_logged_on", "TODO: pick username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2447 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2448
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
2449 body = msim_msg_new(
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2450 "UserID", MSIM_TYPE_INTEGER, session->userid,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2451 NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2452
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2453 /* Request IM info about ourself. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2454 msim_send(session,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2455 "persist", MSIM_TYPE_STRING, g_strdup("persist"),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2456 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2457 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2458 "uid", MSIM_TYPE_INTEGER, session->userid,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2459 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2460 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2461 "body", MSIM_TYPE_DICTIONARY, body,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2462 NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2463
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2464 /* Request MySpace info about ourself. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2465 msim_send(session,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2466 "persist", MSIM_TYPE_STRING, g_strdup("persist"),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2467 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2468 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2469 "uid", MSIM_TYPE_INTEGER, session->userid,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2470 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2471 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2472 "body", MSIM_TYPE_STRING, g_strdup(""),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2473 NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2474
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2475 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2476 /* TODO: set blocklist */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2477
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2478 /* Notify servers of our current status. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2479 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2480 msim_set_status(session->account,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2481 purple_account_get_active_status(session->account));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2482
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2483 /* TODO: setinfo */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2484 /*
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
2485 body = msim_msg_new(
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2486 "TotalFriends", MSIM_TYPE_INTEGER, 666,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2487 NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2488 msim_send(session,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2489 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2490 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2491 "info", MSIM_TYPE_DICTIONARY, body,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2492 NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2493 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2494
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2495 /* Disable due to problems with timeouts. TODO: fix. */
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
2496 #ifdef MSIM_USE_KEEPALIVE
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2497 purple_timeout_add(MSIM_KEEPALIVE_INTERVAL_CHECK,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2498 (GSourceFunc)msim_check_alive, session);
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
2499 #endif
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2500
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2501 purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2502 (GSourceFunc)msim_check_inbox, session);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2503
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2504 msim_check_inbox(session);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2505
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2506 return TRUE;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2507 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2508
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2509 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2510 * Process a message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2511 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2512 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2513 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2514 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2515 * @return TRUE if successful. FALSE if processing failed.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2516 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2517 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2518 msim_process(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2519 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2520 g_return_val_if_fail(session != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2521 g_return_val_if_fail(msg != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2522
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2523 #ifdef MSIM_DEBUG_MSG
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2524 msim_msg_dump("ready to process: %s\n", msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2525 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2526
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2527 if (msim_msg_get_integer(msg, "lc") == 1) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2528 return msim_login_challenge(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2529 } else if (msim_msg_get_integer(msg, "lc") == 2) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2530 return msim_we_are_logged_on(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2531 } else if (msim_msg_get(msg, "bm")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2532 return msim_incoming_bm(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2533 } else if (msim_msg_get(msg, "rid")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2534 return msim_process_reply(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2535 } else if (msim_msg_get(msg, "error")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2536 return msim_error(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2537 } else if (msim_msg_get(msg, "ka")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2538 return TRUE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2539 } else {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2540 msim_unrecognized(session, msg, "in msim_process");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2541 return FALSE;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2542 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2543 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2544
18915
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2545 /** Callback for when a buddy icon finished being downloaded. */
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2546 static void
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2547 msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2548 gpointer user_data,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2549 const gchar *url_text,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2550 gsize len,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2551 const gchar *error_message)
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2552 {
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2553 MsimUser *user;
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2554
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2555 user = (MsimUser *)user_data;
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2556
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2557 purple_debug_info("msim_downloaded_buddy_icon",
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2558 "Downloaded %d bytes\n", len);
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2559
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2560 purple_buddy_icons_set_for_user(user->buddy->account,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2561 user->buddy->name,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2562 (gchar *)url_text, len,
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2563 /* Use URL itself as buddy icon "checksum" */
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2564 user->image_url);
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2565 }
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2566
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2567 /** Store a field of information about a buddy. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2568 static void
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2569 msim_store_user_info_each(gpointer key, gpointer value, gpointer user_data)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2570 {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2571 MsimUser *user;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2572 gchar *key_str, *value_str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2573
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2574 user = (MsimUser *)user_data;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2575 key_str = (gchar *)key;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2576 value_str = (gchar *)value;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2577
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2578 if (!strcmp(key_str, "UserID")) {
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2579 /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2580 if (user->buddy)
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2581 {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2582 purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2583 purple_blist_node_set_int(&user->buddy->node, "UserID", atol(value_str));
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2584 }
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2585 /* Need to store in MsimUser, too? What if not on blist? */
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2586 } else if (!strcmp(key_str, "Age")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2587 user->age = atol(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2588 } else if (!strcmp(key_str, "Gender")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2589 user->gender = g_strdup(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2590 } else if (!strcmp(key_str, "Location")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2591 user->location = g_strdup(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2592 } else if (!strcmp(key_str, "TotalFriends")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2593 user->total_friends = atol(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2594 } else if (!strcmp(key_str, "DisplayName")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2595 user->display_name = g_strdup(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2596 } else if (!strcmp(key_str, "BandName")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2597 user->band_name = g_strdup(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2598 } else if (!strcmp(key_str, "SongName")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2599 user->song_name = g_strdup(value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2600 } else if (!strcmp(key_str, "UserName")) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2601 /* Ignore because PurpleBuddy knows this already */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2602 ;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2603 } else if (!strcmp(key_str, "ImageURL")) {
18915
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2604 const gchar *previous_url;
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2605
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2606 user->image_url = g_strdup(value_str);
18915
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2607
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2608 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2609
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2610 /* Only download if URL changed */
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2611 if (!previous_url || strcmp(previous_url, user->image_url)) {
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2612 purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user);
bfc52862d864 Show buddy icons.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18914
diff changeset
2613 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2614 } else {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2615 /* TODO: other fields in MsimUser */
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2616 gchar *msg;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2617
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2618 msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s",
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2619 key_str, value_str);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2620
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2621 msim_unrecognized(NULL, NULL, msg);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2622
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2623 g_free(msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2624 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2625 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2626
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2627 /** Save buddy information to the buddy list from a user info reply message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2628 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2629 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2630 * @param msg The user information reply, with any amount of information.
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2631 * @param user The structure to save to, or NULL to save in PurpleBuddy->proto_data.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2632 *
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2633 * Variable information is saved to the passed MsimUser structure. Permanent
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2634 * information (UserID) is stored in the blist node of the buddy list (and
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2635 * ends up in blist.xml, persisted to disk) if it exists.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2636 *
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2637 * If the function has no buddy information, this function
18908
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2638 * is a no-op (and returns FALSE).
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2639 *
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2640 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2641 static gboolean
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2642 msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2643 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2644 GHashTable *body;
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2645 gchar *username, *body_str;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2646
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2647 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2648 g_return_val_if_fail(msg != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2649
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2650 body_str = msim_msg_get_string(msg, "body");
18908
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2651 if (!body_str) {
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2652 return FALSE;
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2653 }
6541b0edee26 Fix some assertion failures, that should really not be assertions. Found by using
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18907
diff changeset
2654
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2655 g_return_val_if_fail(body_str != NULL, FALSE);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2656 body = msim_parse_body(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2657 g_free(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2658
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2659
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2660 /* TODO: implement a better hash-like interface, and use it. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2661 username = g_hash_table_lookup(body, "UserName");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2662
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
2663 if (!username) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2664 purple_debug_info("msim",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2665 "msim_process_reply: not caching body, no UserName\n");
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2666 g_hash_table_destroy(body);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2667 return FALSE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2668 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2669
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2670 /* Null user = find and store in PurpleBuddy's proto_data */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2671 if (!user) {
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2672 user = msim_find_user(session, username);
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2673 g_return_val_if_fail(user != NULL, FALSE);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2674 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2675
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2676 g_hash_table_foreach(body, msim_store_user_info_each, user);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2677
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2678 if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN &&
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2679 msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2680 /* TODO: do something with our own IM info, if we need it for some
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2681 * specific purpose. Otherwise it is available on the buddy list,
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2682 * if the user has themselves as their own buddy.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2683 *
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2684 * However, much of the info is already available in MsimSession,
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2685 * stored in msim_we_are_logged_on(). */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2686 } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN &&
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2687 msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2688 /* TODO: same as above, but for MySpace info. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2689 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2690
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2691 g_hash_table_destroy(body);
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
2692
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2693 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2694 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2695
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2696 /** Process the initial server information from the server. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2697 static gboolean
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2698 msim_process_server_info(MsimSession *session, MsimMessage *msg)
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2699 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2700 gchar *body_str;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2701 GHashTable *body;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2702
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2703 body_str = msim_msg_get_string(msg, "body");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2704 g_return_val_if_fail(body_str != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2705 body = msim_parse_body(body_str);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2706 g_free(body_str);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2707 g_return_val_if_fail(body != NULL, FALSE);
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2708
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2709 /* Example body:
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2710 AdUnitRefreshInterval=10.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2711 AlertPollInterval=360.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2712 AllowChatRoomEmoticonSharing=False.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2713 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2714 CurClientVersion=673.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2715 EnableIMBrowse=True.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2716 EnableIMStuffAvatars=False.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2717 EnableIMStuffZaps=False.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2718 MaxAddAllFriends=100.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2719 MaxContacts=1000.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2720 MinClientVersion=594.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2721 MySpaceIM_ENGLISH=78744676.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2722 MySpaceNowTimer=720.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2723 PersistenceDataTimeout=900.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2724 UseWebChallenge=1.
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2725 WebTicketGoHome=False
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2726
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2727 Anything useful? TODO: use what is useful, and use it.
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2728 */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2729 purple_debug_info("msim_process_server_info",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2730 "maximum contacts: %s\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2731 g_hash_table_lookup(body, "MaxContacts") ?
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2732 g_hash_table_lookup(body, "MaxContacts") : "(NULL)");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2733
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2734 session->server_info = body;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2735 /* session->server_info freed in msim_session_destroy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2736
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2737 return TRUE;
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2738 }
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2739
17967
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
2740 /** Process a web challenge, used to login to the web site. */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2741 static gboolean
17967
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
2742 msim_web_challenge(MsimSession *session, MsimMessage *msg)
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
2743 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2744 /* TODO: web challenge, store token */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2745 return FALSE;
17967
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
2746 }
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
2747
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2748 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2749 * Process a persistance message reply from the server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2750 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2751 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2752 * @param msg Message reply from server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2753 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2754 * @return TRUE if successful.
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2755 *
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
2756 * msim_lookup_user sets callback for here
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2757 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2758 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2759 msim_process_reply(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2760 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2761 MSIM_USER_LOOKUP_CB cb;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2762 gpointer data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2763 guint rid, cmd, dsn, lid;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2764
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2765 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2766 g_return_val_if_fail(msg != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2767
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2768 msim_store_user_info(session, msg, NULL);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2769
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2770 rid = msim_msg_get_integer(msg, "rid");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2771 cmd = msim_msg_get_integer(msg, "cmd");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2772 dsn = msim_msg_get_integer(msg, "dsn");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2773 lid = msim_msg_get_integer(msg, "lid");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2774
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2775 /* Unsolicited messages */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2776 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2777 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2778 return msim_process_server_info(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2779 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2780 return msim_web_challenge(session, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2781 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2782 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2783
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2784 /* If a callback is registered for this userid lookup, call it. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2785 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2786 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2787
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2788 if (cb) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2789 purple_debug_info("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2790 "msim_process_body: calling callback now\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2791 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2792 cb(session, msim_msg_clone(msg), data);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2793 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2794 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2795 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2796 purple_debug_info("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2797 "msim_process_body: no callback for rid %d\n", rid);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2798 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2799
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2800 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2801 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2802
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2803 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2804 * Handle an error from the server.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2805 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2806 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2807 * @param msg The message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2808 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2809 * @return TRUE if successfully reported error.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2810 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2811 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2812 msim_error(MsimSession *session, MsimMessage *msg)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2813 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2814 gchar *errmsg, *full_errmsg;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2815 guint err;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2816
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2817 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2818 g_return_val_if_fail(msg != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2819
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2820 err = msim_msg_get_integer(msg, "err");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2821 errmsg = msim_msg_get_string(msg, "errmsg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2822
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2823 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2824 errmsg ? errmsg : "no 'errmsg' given");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2825
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2826 g_free(errmsg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2827
18909
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2828 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
2829 session->sesskey, full_errmsg);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2830
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2831 purple_notify_error(session->account, g_strdup(_("MySpaceIM Error")),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2832 full_errmsg, NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2833
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2834 /* Destroy session if fatal. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2835 if (msim_msg_get(msg, "fatal")) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2836 purple_debug_info("msim", "fatal error, closing\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2837 purple_connection_error(session->gc, full_errmsg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2838 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2839
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2840 return TRUE;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2841 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2842
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2843 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2844 * Process incoming status messages.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2845 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2846 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2847 * @param msg Status update message. Caller frees.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2848 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2849 * @return TRUE if successful.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2850 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
2851 static gboolean
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
2852 msim_incoming_status(MsimSession *session, MsimMessage *msg)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2853 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2854 PurpleBuddyList *blist;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2855 MsimUser *user;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2856 GList *list;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2857 gchar *status_headline;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2858 gint status_code, purple_status_code;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2859 gchar *username;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2860
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2861 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2862 g_return_val_if_fail(msg != NULL, FALSE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2863
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2864 msim_msg_dump("msim_status msg=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2865
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2866 /* Helpfully looked up by msim_incoming_resolve() for us. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2867 username = msim_msg_get_string(msg, "_username");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2868 g_return_val_if_fail(username != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2869
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2870 {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2871 gchar *ss;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2872
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2873 ss = msim_msg_get_string(msg, "msg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2874 purple_debug_info("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2875 "msim_status: updating status for <%s> to <%s>\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2876 username, ss ? ss : "(NULL)");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2877 g_free(ss);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2878 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2879
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2880 /* Example fields:
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2881 * |s|0|ss|Offline
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2882 * |s|1|ss|:-)|ls||ip|0|p|0
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2883 */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2884 list = msim_msg_get_list(msg, "msg");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2885
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2886 status_code = atoi(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2887 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2888 status_headline = g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2889
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2890 blist = purple_get_blist();
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2891
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2892 /* Add buddy if not found */
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2893 user = msim_find_user(session, username);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2894 if (!user) {
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2895 PurpleBuddy *buddy;
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2896
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2897 purple_debug_info("msim",
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2898 "msim_status: making new buddy for %s\n", username);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2899 buddy = purple_buddy_new(session->account, username, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2900 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2901
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2902 user = msim_get_user_from_buddy(buddy);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2903
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2904 /* All buddies on list should have 'uid' integer associated with them. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2905 purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2906
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
2907 msim_store_user_info(session, msg, NULL);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2908 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2909 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2910 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2911
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
2912 user->headline = g_strdup(status_headline);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2913
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2914 /* Set user status */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2915 switch (status_code) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2916 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2917 purple_status_code = PURPLE_STATUS_OFFLINE;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2918 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2919
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2920 case MSIM_STATUS_CODE_ONLINE:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2921 purple_status_code = PURPLE_STATUS_AVAILABLE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2922 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2923
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2924 case MSIM_STATUS_CODE_AWAY:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2925 purple_status_code = PURPLE_STATUS_AWAY;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2926 break;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2927
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2928 case MSIM_STATUS_CODE_IDLE:
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2929 /* will be handled below */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2930 purple_status_code = -1;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2931 break;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2932
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2933 default:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2934 purple_debug_info("msim", "msim_status for %s, unknown status code %d, treating as available\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2935 username, status_code);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2936 purple_status_code = PURPLE_STATUS_AVAILABLE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2937 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2938
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2939 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2940
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2941 if (status_code == MSIM_STATUS_CODE_IDLE) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2942 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2943 purple_prpl_got_user_idle(session->account, username, TRUE, time(NULL));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2944 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2945 /* All other statuses indicate going back to non-idle. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2946 purple_prpl_got_user_idle(session->account, username, FALSE, time(NULL));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2947 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2948
17974
3d400b022acc Disable sending third-party client version to oncoming buddies.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17973
diff changeset
2949 #ifdef MSIM_SEND_CLIENT_VERSION
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2950 if (status_code == MSIM_STATUS_CODE_ONLINE) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2951 /* Secretly whisper to unofficial clients our own version as they come online */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2952 msim_send_unofficial_client(session, username);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2953 }
17974
3d400b022acc Disable sending third-party client version to oncoming buddies.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17973
diff changeset
2954 #endif
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
2955
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2956 g_free(username);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2957 msim_msg_list_free(list);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2958
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2959 return TRUE;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2960 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2961
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2962 /** Add a buddy to user's buddy list. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2963 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2964 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2965 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2966 MsimSession *session;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2967 MsimMessage *msg;
18910
2115910c5746 Update for 0.14.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18909
diff changeset
2968 /* MsimMessage *msg_persist; */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2969 MsimMessage *body;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2970
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2971 session = (MsimSession *)gc->proto_data;
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
2972 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2973 buddy->name, (group && group->name) ? group->name : "(no group)");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2974
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
2975 msg = msim_msg_new(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2976 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2977 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2978 /* "newprofileid" will be inserted here with uid. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2979 "reason", MSIM_TYPE_STRING, g_strdup(""),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2980 NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2981
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
2982 if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2983 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2984 msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2985 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2986 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2987 msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2988
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2989 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2990 * buddy list since Purple adds it locally. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
2991
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
2992 body = msim_msg_new(
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2993 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2994 "GroupName", MSIM_TYPE_STRING, g_strdup(group->name),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2995 "Position", MSIM_TYPE_INTEGER, 1000,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2996 "Visibility", MSIM_TYPE_INTEGER, 1,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2997 "NickName", MSIM_TYPE_STRING, g_strdup(""),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2998 "NameSelect", MSIM_TYPE_INTEGER, 0,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
2999 NULL);
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3000
18885
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3001 /* TODO: Update blocklist. */
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3002
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3003 #if 0
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3004 msg_persist = msim_msg_new(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3005 "persist", MSIM_TYPE_INTEGER, 1,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3006 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3007 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3008 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3009 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3010 /* TODO: Use msim_new_reply_callback to get rid. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3011 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3012 "body", MSIM_TYPE_DICTIONARY, body,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3013 NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3014
18885
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3015 if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL))
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3016 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3017 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
18885
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3018 msim_msg_free(msg_persist);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3019 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3020 }
18885
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3021 msim_msg_free(msg_persist);
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3022 #endif
644144f1a5c2 Use the right message in the persistance command for adding buddies, but
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18883
diff changeset
3023
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3024 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3025
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3026 /** Perform actual postprocessing on a message, adding userid as specified.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3027 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3028 * @param msg The message to postprocess.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3029 * @param uid_before Name of field where to insert new field before, or NULL for end.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3030 * @param uid_field_name Name of field to add uid to.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3031 * @param uid The userid to insert.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3032 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3033 * If the field named by uid_field_name already exists, then its string contents will
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3034 * be used for the field, except "<uid>" will be replaced by the userid.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3035 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3036 * If the field named by uid_field_name does not exist, it will be added before the
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3037 * field named by uid_before, as an integer, with the userid.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3038 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3039 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing().
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3040 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3041 static MsimMessage *
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3042 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3043 const gchar *uid_field_name, guint uid)
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3044 {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3045 msim_msg_dump("msim_do_postprocessing msg: %s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3046
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3047 /* First, check - if the field already exists, replace <uid> within it */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3048 if (msim_msg_get(msg, uid_field_name)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3049 MsimMessageElement *elem;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3050 gchar *fmt_string;
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3051 gchar *uid_str, *new_str;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3052
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3053 /* Warning: this is a delicate, but safe, operation */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3054
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3055 elem = msim_msg_get(msg, uid_field_name);
18883
0ca629db64a4 Use a list when updating the blocklist when removing the buddy, since
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18881
diff changeset
3056
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3057 /* Get the packed element, flattening it. This allows <uid> to be
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3058 * replaced within nested data structures, since the replacement is done
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3059 * on the linear, packed data, not on a complicated data structure.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3060 *
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3061 * For example, if the field was originally a dictionary or a list, you
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3062 * would have to iterate over all the items in it to see what needs to
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3063 * be replaced. But by packing it first, the <uid> marker is easily replaced
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3064 * just by a string replacement.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3065 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3066 fmt_string = msim_msg_pack_element_data(elem);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3067
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3068 uid_str = g_strdup_printf("%d", uid);
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3069 new_str = str_replace(fmt_string, "<uid>", uid_str);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3070 g_free(uid_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3071 g_free(fmt_string);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3072
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3073 /* Free the old element data */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3074 msim_msg_free_element_data(elem->data);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3075
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3076 /* Replace it with our new data */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3077 elem->data = new_str;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3078 elem->type = MSIM_TYPE_RAW;
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3079
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3080 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3081 /* Otherwise, insert new field into outgoing message. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3082 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3083 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3084
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3085 msim_msg_dump("msim_postprocess_outgoing_cb: postprocessed msg=%s\n", msg);
18883
0ca629db64a4 Use a list when updating the blocklist when removing the buddy, since
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18881
diff changeset
3086
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3087 return msg;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3088 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3089
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3090 /** Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3091 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3092 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3093 * @param userinfo The user information reply message, containing the user ID
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3094 * @param data The message to postprocess and send.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3095 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3096 * The data message should contain these fields:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3097 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3098 * _uid_field_name: string, name of field to add with userid from userinfo message
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3099 * _uid_before: string, name of field before field to insert, or NULL for end
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3100 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3101 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3102 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3103 static void
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3104 msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo,
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3105 gpointer data)
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3106 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3107 gchar *body_str;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3108 GHashTable *body;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3109 gchar *uid, *uid_field_name, *uid_before;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3110 MsimMessage *msg;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3111
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3112 msg = (MsimMessage *)data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3113
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3114 msim_msg_dump("msim_postprocess_outgoing_cb() got msg=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3115
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3116 /* Obtain userid from userinfo message. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3117 body_str = msim_msg_get_string(userinfo, "body");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3118 g_return_if_fail(body_str != NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3119 body = msim_parse_body(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3120 g_free(body_str);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3121
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3122 uid = g_strdup(g_hash_table_lookup(body, "UserID"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3123 g_hash_table_destroy(body);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3124
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3125 uid_field_name = msim_msg_get_string(msg, "_uid_field_name");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3126 uid_before = msim_msg_get_string(msg, "_uid_before");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3127
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3128 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, atol(uid));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3129
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3130 /* Send */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3131 if (!msim_msg_send(session, msg)) {
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
3132 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3133 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3134
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3135
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3136 /* Free field names AFTER sending message, because MsimMessage does NOT copy
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3137 * field names - instead, treats them as static strings (which they usually are).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3138 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3139 g_free(uid_field_name);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3140 g_free(uid_before);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3141
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3142 g_hash_table_destroy(body);
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
3143
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3144 //msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3145 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3146
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3147 /** Postprocess and send a message.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3148 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3149 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3150 * @param msg Message to postprocess. Will NOT be freed.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3151 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3152 * @param uid_field_name Name of new field to add, containing uid of username. Static string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3153 * @param uid_before Name of existing field to insert username field before. Static string.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3154 *
17973
acff371d7908 Fix crash when deleting buddies on Windows. This was done by
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17972
diff changeset
3155 * @return TRUE if successful.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3156 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3157 gboolean
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3158 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3159 const gchar *username, const gchar *uid_field_name,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3160 const gchar *uid_before)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3161 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3162 PurpleBuddy *buddy;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3163 guint uid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3164 gboolean rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3165
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3166 g_return_val_if_fail(msg != NULL, FALSE);
17973
acff371d7908 Fix crash when deleting buddies on Windows. This was done by
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17972
diff changeset
3167
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3168 /* Store information for msim_postprocess_outgoing_cb(). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3169 msim_msg_dump("msim_postprocess_outgoing: msg before=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3170 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3171 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3172 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3173
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3174 /* First, try the most obvious. If numeric userid is given, use that directly. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3175 if (msim_is_userid(username)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3176 uid = atol(username);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3177 } else {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3178 /* Next, see if on buddy list and know uid. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3179 buddy = purple_find_buddy(session->account, username);
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3180 if (buddy) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3181 uid = purple_blist_node_get_int(&buddy->node, "UserID");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3182 } else {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3183 uid = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3184 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3185
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3186 if (!buddy || !uid)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3187 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3188 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3189 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n",
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
3190 username ? username : "(NULL)");
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3191 msim_msg_dump("msim_postprocess_outgoing - scheduling lookup, msg=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3192 /* TODO: where is cloned message freed? Should be in _cb. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3193 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg));
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3194 return TRUE; /* not sure of status yet - haven't sent! */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3195 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3196 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3197
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3198 /* Already have uid, postprocess and send msg immediately. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3199 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n",
17976
b2d81d13f015 Be more careful about null strings in %s format specifier in debug messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17974
diff changeset
3200 username ? username : "(NULL)", uid);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3201
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3202 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3203
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3204 msim_msg_dump("msim_postprocess_outgoing: msg after (uid immediate)=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3205
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3206 rc = msim_msg_send(session, msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3207
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3208 //msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3209
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3210 return rc;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3211 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3212
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3213 /** Remove a buddy from the user's buddy list. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3214 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3215 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3216 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3217 MsimSession *session;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3218 MsimMessage *delbuddy_msg;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3219 MsimMessage *persist_msg;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3220 MsimMessage *blocklist_msg;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3221 GList *blocklist_updates;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3222
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3223 session = (MsimSession *)gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3224
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3225 delbuddy_msg = msim_msg_new(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3226 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3227 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3228 /* 'delprofileid' with uid will be inserted here. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3229 NULL);
17973
acff371d7908 Fix crash when deleting buddies on Windows. This was done by
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17972
diff changeset
3230
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3231 if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3232 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3233 msim_msg_free(delbuddy_msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3234 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3235 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3236 msim_msg_free(delbuddy_msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3237
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3238 persist_msg = msim_msg_new(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3239 "persist", MSIM_TYPE_INTEGER, 1,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3240 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3241 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3242 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3243 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3244 "uid", MSIM_TYPE_INTEGER, session->userid,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3245 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3246 /* <uid> will be replaced by postprocessing */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3247 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3248 NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3249
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3250 if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3251 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3252 msim_msg_free(persist_msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3253 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3254 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3255 msim_msg_free(persist_msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3256
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3257 blocklist_updates = NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3258 blocklist_updates = g_list_prepend(blocklist_updates, "a-");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3259 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3260 blocklist_updates = g_list_prepend(blocklist_updates, "b-");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3261 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3262 blocklist_updates = g_list_reverse(blocklist_updates);
18879
e0cac5db762b In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17976
diff changeset
3263
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3264 blocklist_msg = msim_msg_new(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3265 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3266 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
18879
e0cac5db762b In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17976
diff changeset
3267 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
18883
0ca629db64a4 Use a list when updating the blocklist when removing the buddy, since
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18881
diff changeset
3268 //"idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"),
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3269 "idlist", MSIM_TYPE_LIST, blocklist_updates,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3270 NULL);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3271
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3272 if (!msim_postprocess_outgoing(session, blocklist_msg, buddy->name, "idlist", NULL)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3273 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed"));
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3274 msim_msg_free(blocklist_msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3275 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3276 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3277 msim_msg_free(blocklist_msg);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3278 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3279
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3280 /** Return whether the buddy can be messaged while offline.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3281 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3282 * The protocol supports offline messages in just the same way as online
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3283 * messages.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3284 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3285 gboolean
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3286 msim_offline_message(const PurpleBuddy *buddy)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3287 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3288 return TRUE;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3289 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3290
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3291 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3292 * Callback when input available.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3293 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3294 * @param gc_uncasted A PurpleConnection pointer.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3295 * @param source File descriptor.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3296 * @param cond PURPLE_INPUT_READ
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3297 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3298 * Reads the input, and calls msim_preprocess_incoming() to handle it.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3299 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3300 static void
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3301 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3302 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3303 PurpleConnection *gc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3304 PurpleAccount *account;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3305 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3306 gchar *end;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3307 int n;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3308
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3309 g_return_if_fail(gc_uncasted != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3310 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3311
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3312 gc = (PurpleConnection *)(gc_uncasted);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3313 account = purple_connection_get_account(gc);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3314 session = gc->proto_data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3315
18909
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3316 /* libpurple/eventloop.h only defines these two */
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3317 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3318 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3319 purple_connection_error(gc, _("Invalid input condition"));
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3320 return;
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3321 }
c32fcdef2809 Only say we are connected after the MsimSession structure is fully setup.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18908
diff changeset
3322
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3323 g_return_if_fail(cond == PURPLE_INPUT_READ);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3324 g_return_if_fail(MSIM_SESSION_VALID(session));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3325
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3326 /* Mark down that we got data, so don't timeout. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3327 session->last_comm = time(NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3328
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3329 /* Only can handle so much data at once...
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3330 * If this happens, try recompiling with a higher MSIM_READ_BUF_SIZE.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3331 * Should be large enough to hold the largest protocol message.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3332 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3333 if (session->rxoff >= MSIM_READ_BUF_SIZE) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3334 purple_debug_error("msim",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3335 "msim_input_cb: %d-byte read buffer full! rxoff=%d\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3336 MSIM_READ_BUF_SIZE, session->rxoff);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3337 purple_connection_error(gc, _("Read buffer full"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3338 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3339 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3340
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3341 purple_debug_info("msim", "buffer at %d (max %d), reading up to %d\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3342 session->rxoff, MSIM_READ_BUF_SIZE,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3343 MSIM_READ_BUF_SIZE - session->rxoff);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3344
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3345 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3346 * the file descriptor, but it sometimes differs from the 'source' parameter.
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3347 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3348 n = recv(session->fd, session->rxbuf + session->rxoff, MSIM_READ_BUF_SIZE - session->rxoff, 0);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3349
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3350 if (n < 0 && errno == EAGAIN) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3351 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3352 } else if (n < 0) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3353 purple_debug_error("msim", "msim_input_cb: read error, ret=%d, "
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3354 "error=%s, source=%d, fd=%d (%X))\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3355 n, strerror(errno), source, session->fd, session->fd);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3356 purple_connection_error(gc, _("Read error"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3357 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3358 } else if (n == 0) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3359 purple_debug_info("msim", "msim_input_cb: server disconnected\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3360 purple_connection_error(gc, _("Server has disconnected"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3361 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3362 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3363
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3364 if (n + session->rxoff >= MSIM_READ_BUF_SIZE) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3365 purple_debug_info("msim_input_cb", "received %d bytes, pushing rxoff to %d, over buffer size of %d\n",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3366 n, n + session->rxoff, MSIM_READ_BUF_SIZE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3367 /* TODO: g_realloc like msn, yahoo, irc, jabber? */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3368 purple_connection_error(gc, _("Read buffer full"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3369 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3370
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3371 /* Null terminate */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3372 purple_debug_info("msim", "msim_input_cb: going to null terminate "
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3373 "at n=%d\n", n);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3374 session->rxbuf[session->rxoff + n] = 0;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3375
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3376 #ifdef MSIM_CHECK_EMBEDDED_NULLS
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3377 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3378 if (strlen(session->rxbuf + session->rxoff) != n) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3379 /* Occurs after login, but it is not a null byte. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3380 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes"
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3381 "--null byte encountered?\n",
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3382 strlen(session->rxbuf + session->rxoff), n);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3383 //purple_connection_error(gc, "Invalid message - null byte on input");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3384 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3385 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3386 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3387
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3388 session->rxoff += n;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3389 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3390
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3391 #ifdef MSIM_DEBUG_RXBUF
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3392 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3393 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3394
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3395 /* Look for \\final\\ end markers. If found, process message. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3396 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3397 MsimMessage *msg;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3398
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3399 #ifdef MSIM_DEBUG_RXBUF
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3400 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3401 #endif
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3402 *end = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3403 msg = msim_parse(g_strdup(session->rxbuf));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3404 if (!msg) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3405 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3406 purple_connection_error(gc, _("Unparseable message"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3407 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3408 /* Process message and then free it (processing function should
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3409 * clone message if it wants to keep it afterwards.) */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3410 if (!msim_preprocess_incoming(session, msg)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3411 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3412 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3413 msim_msg_free(msg);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3414 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3415
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3416 /* Move remaining part of buffer to beginning. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3417 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3418 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3419 MSIM_READ_BUF_SIZE - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3420
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3421 /* Clear end of buffer */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3422 //memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3423 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3424 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3425
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3426 /* Setup a callback, to be called when a reply is received with the returned rid.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3427 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3428 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3429 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3430 *
17951
c0758f8dff33 Update for 0.12.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17950
diff changeset
3431 * @return The request/reply ID, used to link replies with requests, or -1.
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3432 * Put the rid in your request, 'rid' field.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3433 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3434 * TODO: Make more generic and more specific:
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3435 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3436 * 2) data - make it an MsimMessage?
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3437 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3438 static guint
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3439 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3440 gpointer data)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3441 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3442 guint rid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3443
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3444 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
17951
c0758f8dff33 Update for 0.12.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17950
diff changeset
3445
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3446 rid = session->next_rid++;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3447
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3448 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3449 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3450
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3451 return rid;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3452 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3453
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3454 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3455 * Callback when connected. Sets up input handlers.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3456 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3457 * @param data A PurpleConnection pointer.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3458 * @param source File descriptor.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3459 * @param error_message
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3460 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3461 static void
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3462 msim_connect_cb(gpointer data, gint source, const gchar *error_message)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3463 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3464 PurpleConnection *gc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3465 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3466
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3467 g_return_if_fail(data != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3468
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3469 gc = (PurpleConnection *)data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3470 session = (MsimSession *)gc->proto_data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3471
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3472 if (source < 0) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3473 purple_connection_error(gc, _("Couldn't connect to host"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3474 purple_connection_error(gc, g_strdup_printf(
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3475 _("Couldn't connect to host: %s (%d)"),
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3476 error_message ? error_message : "no message given",
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3477 source));
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3478 return;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3479 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3480
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3481 session->fd = source;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3482
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3483 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3484 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3485
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3486 /* Session methods */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3487
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3488 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3489 * Create a new MSIM session.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3490 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3491 * @param acct The account to create the session from.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3492 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3493 * @return Pointer to a new session. Free with msim_session_destroy.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3494 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3495 MsimSession *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3496 msim_session_new(PurpleAccount *acct)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3497 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3498 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3499
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3500 g_return_val_if_fail(acct != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3501
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3502 session = g_new0(MsimSession, 1);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3503
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3504 session->magic = MSIM_SESSION_STRUCT_MAGIC;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3505 session->account = acct;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3506 session->gc = purple_account_get_connection(acct);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3507 session->sesskey = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3508 session->userid = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3509 session->username = NULL;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3510 session->fd = -1;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3511
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3512 /* TODO: Remove. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3513 session->user_lookup_cb = g_hash_table_new_full(g_direct_hash,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3514 g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3515 session->user_lookup_cb_data = g_hash_table_new_full(g_direct_hash,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3516 g_direct_equal, NULL, NULL);/* TODO: we don't know what the values are,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3517 they could be integers inside gpointers
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3518 or strings, so I don't freed them.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3519 Figure this out, once free cache. */
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
3520
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3521 /* Created in msim_process_server_info() */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3522 session->server_info = NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3523
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3524 session->rxoff = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3525 session->rxbuf = g_new0(gchar, MSIM_READ_BUF_SIZE);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3526 session->next_rid = 1;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3527 session->last_comm = time(NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3528 session->inbox_status = 0;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3529
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3530 return session;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3531 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3532
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3533 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3534 * Free a session.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3535 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3536 * @param session The session to destroy.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3537 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3538 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3539 msim_session_destroy(MsimSession *session)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3540 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3541 g_return_if_fail(MSIM_SESSION_VALID(session));
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3542
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3543 session->magic = -1;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3544
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3545 g_free(session->rxbuf);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3546 g_free(session->username);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3547
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3548 /* TODO: Remove. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3549 g_hash_table_destroy(session->user_lookup_cb);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3550 g_hash_table_destroy(session->user_lookup_cb_data);
17966
f1827c3dc65a Add msim_process_server_info() to save the server information dictionary
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17965
diff changeset
3551
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3552 if (session->server_info) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3553 g_hash_table_destroy(session->server_info);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3554 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3555
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3556 g_free(session);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3557 }
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3558
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3559 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3560 * Close the connection.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3561 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3562 * @param gc The connection.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3563 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3564 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3565 msim_close(PurpleConnection *gc)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3566 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3567 MsimSession *session;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3568
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3569 if (gc == NULL) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3570 return;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3571 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3572
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3573 session = (MsimSession *)gc->proto_data;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3574 if (session == NULL)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3575 return;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3576
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3577 gc->proto_data = NULL;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3578
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3579 if (!MSIM_SESSION_VALID(session)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3580 return;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3581 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3582
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3583 if (session->gc->inpa) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3584 purple_input_remove(session->gc->inpa);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3585 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3586
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3587 msim_session_destroy(session);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3588 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3589
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3590
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3591 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3592 * Check if a string is a userid (all numeric).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3593 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3594 * @param user The user id, email, or name.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3595 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3596 * @return TRUE if is userid, FALSE if not.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3597 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3598 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3599 msim_is_userid(const gchar *user)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3600 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3601 g_return_val_if_fail(user != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3602
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3603 return strspn(user, "0123456789") == strlen(user);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3604 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3605
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3606 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3607 * Check if a string is an email address (contains an @).
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3608 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3609 * @param user The user id, email, or name.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3610 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3611 * @return TRUE if is an email, FALSE if not.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3612 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3613 * This function is not intended to be used as a generic
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3614 * means of validating email addresses, but to distinguish
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3615 * between a user represented by an email address from
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3616 * other forms of identification.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3617 */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3618 static gboolean
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3619 msim_is_email(const gchar *user)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3620 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3621 g_return_val_if_fail(user != NULL, FALSE);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3622
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3623 return strchr(user, '@') != NULL;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3624 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3625
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3626
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3627 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3628 * Asynchronously lookup user information, calling callback when receive result.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3629 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3630 * @param session
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3631 * @param user The user id, email address, or username. Not freed.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3632 * @param cb Callback, called with user information when available.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3633 * @param data An arbitray data pointer passed to the callback.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3634 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3635 /* TODO: change to not use callbacks */
17969
8983b8340fdc Make msimprpl-internal functions static.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17968
diff changeset
3636 static void
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3637 msim_lookup_user(MsimSession *session, const gchar *user,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3638 MSIM_USER_LOOKUP_CB cb, gpointer data)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3639 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3640 MsimMessage *body;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3641 gchar *field_name;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3642 guint rid, cmd, dsn, lid;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3643
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3644 g_return_if_fail(MSIM_SESSION_VALID(session));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3645 g_return_if_fail(user != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3646 g_return_if_fail(cb != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3647
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3648 purple_debug_info("msim", "msim_lookup_userid: "
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3649 "asynchronously looking up <%s>\n", user);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3650
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3651 msim_msg_dump("msim_lookup_user: data=%s\n", (MsimMessage *)data);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3652
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3653 /* Setup callback. Response will be associated with request using 'rid'. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3654 rid = msim_new_reply_callback(session, cb, data);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3655
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3656 /* Send request */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3657
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3658 cmd = MSIM_CMD_GET;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3659
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3660 if (msim_is_userid(user)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3661 field_name = "UserID";
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3662 dsn = MG_MYSPACE_INFO_BY_ID_DSN;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3663 lid = MG_MYSPACE_INFO_BY_ID_LID;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3664 } else if (msim_is_email(user)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3665 field_name = "Email";
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3666 dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3667 lid = MG_MYSPACE_INFO_BY_STRING_LID;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3668 } else {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3669 field_name = "UserName";
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3670 dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3671 lid = MG_MYSPACE_INFO_BY_STRING_LID;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3672 }
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3673
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3674 body = msim_msg_new(
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3675 field_name, MSIM_TYPE_STRING, g_strdup(user),
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3676 NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3677
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3678 g_return_if_fail(msim_send(session,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3679 "persist", MSIM_TYPE_INTEGER, 1,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3680 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3681 "cmd", MSIM_TYPE_INTEGER, 1,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3682 "dsn", MSIM_TYPE_INTEGER, dsn,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3683 "uid", MSIM_TYPE_INTEGER, session->userid,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3684 "lid", MSIM_TYPE_INTEGER, lid,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3685 "rid", MSIM_TYPE_INTEGER, rid,
18881
3ec39ff6b407 Use the new dictionary data type when:
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18879
diff changeset
3686 "body", MSIM_TYPE_DICTIONARY, body,
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3687 NULL));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3688 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3689
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3690
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3691 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3692 * Obtain the status text for a buddy.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3693 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3694 * @param buddy The buddy to obtain status text for.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3695 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3696 * @return Status text, or NULL if error. Caller g_free()'s.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3697 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3698 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3699 char *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3700 msim_status_text(PurpleBuddy *buddy)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3701 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3702 MsimSession *session;
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3703 MsimUser *user;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3704 const gchar *display_name, *headline;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3705
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3706 g_return_val_if_fail(buddy != NULL, NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3707
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3708 user = msim_get_user_from_buddy(buddy);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3709
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3710 session = (MsimSession *)buddy->account->gc->proto_data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3711 g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3712
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3713 display_name = headline = NULL;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3714
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3715 /* Retrieve display name and/or headline, depending on user preference. */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3716 if (purple_account_get_bool(session->account, "show_display_name", TRUE)) {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3717 display_name = user->display_name;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3718 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3719
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3720 if (purple_account_get_bool(session->account, "show_headline", FALSE)) {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3721 headline = user->headline;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3722 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3723
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3724 /* Return appropriate combination of display name and/or headline, or neither. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3725
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3726 if (display_name && headline) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3727 return g_strconcat(display_name, " ", headline, NULL);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3728 } else if (display_name) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3729 return g_strdup(display_name);
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3730 } else if (headline) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3731 return g_strdup(headline);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3732 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3733
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3734 return NULL;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3735 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3736
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3737 /**
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3738 * Obtain the tooltip text for a buddy.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3739 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3740 * @param buddy Buddy to obtain tooltip text on.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3741 * @param user_info Variable modified to have the tooltip text.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3742 * @param full TRUE if should obtain full tooltip text.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3743 *
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3744 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3745 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3746 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3747 gboolean full)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3748 {
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3749 MsimUser *user;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3750
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3751 g_return_if_fail(buddy != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3752 g_return_if_fail(user_info != NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3753
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3754 user = msim_get_user_from_buddy(buddy);
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3755
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3756 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3757 MsimSession *session;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3758
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3759 session = (MsimSession *)buddy->account->gc->proto_data;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3760
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3761 g_return_if_fail(MSIM_SESSION_VALID(session));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3762
18912
7519560095f7 Use MsimUser structure for storing ephemeral information on users, instead
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18910
diff changeset
3763 /* TODO: if (full), do something different? */
18913
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3764
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3765 /* TODO: request information? have to figure out how to do
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3766 * the asynchronous lookup like oscar does (tooltip shows
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3767 * 'retrieving...' if not yet available, then changes when it is).
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3768 *
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3769 * Right now, only show what we have on hand.
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3770 */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3771
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3772 /* Show abbreviated user info. */
1d243e70db35 Refactor msim_tooltip_text() and msim_get_info_cb(), so that they now both use
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18912
diff changeset
3773 msim_append_user_info(session, user_info, user, FALSE);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3774 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3775 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3776
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3777 /** Actions menu for account. */
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3778 GList *
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3779 msim_actions(PurplePlugin *plugin, gpointer context)
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3780 {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3781 PurpleConnection *gc;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3782 GList *menu;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3783 //PurplePluginAction *act;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3784
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3785 gc = (PurpleConnection *)context;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3786
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3787 menu = NULL;
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3788
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3789 #if 0
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3790 /* TODO: find out how */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3791 act = purple_plugin_action_new(_("Find people..."), msim_);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3792 menu = g_list_append(menu, act);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3793
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3794 act = purple_plugin_action_new(_("Import friends..."), NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3795 menu = g_list_append(menu, act);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3796
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3797 act = purple_plugin_action_new(_("Change IM name..."), NULL);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3798 menu = g_list_append(menu, act);
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3799 #endif
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3800
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3801 return menu;
17965
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3802 }
e3687194f2b2 Use MsimMessage's new list type for status messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17963
diff changeset
3803
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3804 /** Callbacks called by Purple, to access this plugin. */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3805 PurplePluginProtocolInfo prpl_info = {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3806 /* options */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3807 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
3808 | OPT_PROTO_MAIL_CHECK,
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
3809
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3810 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3811 NULL, /* user_splits */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3812 NULL, /* protocol_options */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3813 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3814 msim_list_icon, /* list_icon */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3815 NULL, /* list_emblems */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3816 msim_status_text, /* status_text */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3817 msim_tooltip_text, /* tooltip_text */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3818 msim_status_types, /* status_types */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3819 msim_blist_node_menu, /* blist_node_menu */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3820 NULL, /* chat_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3821 NULL, /* chat_info_defaults */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3822 msim_login, /* login */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3823 msim_close, /* close */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3824 msim_send_im, /* send_im */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3825 NULL, /* set_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3826 msim_send_typing, /* send_typing */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3827 msim_get_info, /* get_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3828 msim_set_status, /* set_status */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3829 msim_set_idle, /* set_idle */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3830 NULL, /* change_passwd */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3831 msim_add_buddy, /* add_buddy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3832 NULL, /* add_buddies */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3833 msim_remove_buddy, /* remove_buddy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3834 NULL, /* remove_buddies */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3835 NULL, /* add_permit */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3836 NULL, /* add_deny */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3837 NULL, /* rem_permit */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3838 NULL, /* rem_deny */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3839 NULL, /* set_permit_deny */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3840 NULL, /* join_chat */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3841 NULL, /* reject chat invite */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3842 NULL, /* get_chat_name */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3843 NULL, /* chat_invite */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3844 NULL, /* chat_leave */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3845 NULL, /* chat_whisper */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3846 NULL, /* chat_send */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3847 NULL, /* keepalive */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3848 NULL, /* register_user */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3849 NULL, /* get_cb_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3850 NULL, /* get_cb_away */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3851 NULL, /* alias_buddy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3852 NULL, /* group_buddy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3853 NULL, /* rename_group */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3854 NULL, /* buddy_free */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3855 NULL, /* convo_closed */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3856 NULL, /* normalize */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3857 NULL, /* set_buddy_icon */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3858 NULL, /* remove_group */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3859 NULL, /* get_cb_real_name */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3860 NULL, /* set_chat_topic */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3861 NULL, /* find_blist_chat */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3862 NULL, /* roomlist_get_list */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3863 NULL, /* roomlist_cancel */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3864 NULL, /* roomlist_expand_category */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3865 NULL, /* can_receive_file */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3866 NULL, /* send_file */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3867 NULL, /* new_xfer */
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
3868 msim_offline_message, /* offline_message */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3869 NULL, /* whiteboard_prpl_ops */
18917
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
3870 msim_send_really_raw, /* send_raw */
6ea5602643ea disapproval of revision 'b888bc5c0494c9dd0398baba81e4d602ac88948f'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18916
diff changeset
3871 NULL, /* roomlist_room_serialize */
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3872 NULL, /* _purple_reserved1 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3873 NULL, /* _purple_reserved2 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3874 NULL, /* _purple_reserved3 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3875 NULL /* _purple_reserved4 */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3876 };
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3877
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3878
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3879
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3880 /** Based on MSN's plugin info comments. */
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3881 PurplePluginInfo info = {
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3882 PURPLE_PLUGIN_MAGIC,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3883 PURPLE_MAJOR_VERSION,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3884 PURPLE_MINOR_VERSION,
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3885 PURPLE_PLUGIN_PROTOCOL, /**< type */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3886 NULL, /**< ui_requirement */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3887 0, /**< flags */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3888 NULL, /**< dependencies */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3889 PURPLE_PRIORITY_DEFAULT, /**< priority */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3890
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3891 "prpl-myspace", /**< id */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3892 "MySpaceIM", /**< name */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3893 MSIM_PRPL_VERSION_STRING, /**< version */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3894 /** summary */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3895 "MySpaceIM Protocol Plugin",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3896 /** description */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3897 "MySpaceIM Protocol Plugin",
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3898 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3899 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3900
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3901 msim_load, /**< load */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3902 NULL, /**< unload */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3903 NULL, /**< destroy */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3904 NULL, /**< ui_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3905 &prpl_info, /**< extra_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3906 NULL, /**< prefs_info */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3907 msim_actions, /**< msim_actions */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3908 NULL, /**< reserved1 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3909 NULL, /**< reserved2 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3910 NULL, /**< reserved3 */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3911 NULL /**< reserved4 */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3912 };
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3913
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3914
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3915 #ifdef MSIM_SELF_TEST
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3916 /** Test functions.
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3917 * Used to test or try out the internal workings of msimprpl. If you're reading
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3918 * this code for the first time, these functions can be instructive in learning
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3919 * how msimprpl is architected.
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3920 */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3921 void
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3922 msim_test_all(void) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3923 guint failures;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3924
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3925
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3926 failures = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3927 failures += msim_test_msg();
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3928 failures += msim_test_escaping();
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3929
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3930 if (failures) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3931 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3932 } else {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3933 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3934 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3935 exit(0);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3936 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3937
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3938 /** Test MsimMessage for basic functionality. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3939 int
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3940 msim_test_msg(void)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3941 {
18879
e0cac5db762b In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17976
diff changeset
3942 MsimMessage *msg, *msg_cloned, *msg2;
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3943 GList *list;
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3944 gchar *packed, *packed_expected, *packed_cloned;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3945 guint failures;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3946
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3947 failures = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3948
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3949 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3950 msg = msim_msg_new(NULL); /* Create a new, empty message. */
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3951
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3952 /* Append some new elements. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3953 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len(g_strdup("XXX"), 3));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3954 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3955 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3956 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3957 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3958 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7"));
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3959 msim_msg_dump("msg debug str=%s\n", msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3960 packed = msim_msg_pack(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3961
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3962 purple_debug_info("msim", "msg packed=%s\n", packed);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3963
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3964 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3965 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3966
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3967 if (0 != strcmp(packed, packed_expected)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3968 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3969 ++failures, packed, packed_expected);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3970 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3971
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3972
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3973 msg_cloned = msim_msg_clone(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3974 packed_cloned = msim_msg_pack(msg_cloned);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3975
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3976 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned);
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
3977 if (0 != strcmp(packed, packed_cloned)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3978 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3979 ++failures, packed_cloned, packed);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3980 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3981
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3982 g_free(packed);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3983 g_free(packed_cloned);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3984 msim_msg_free(msg_cloned);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3985 msim_msg_free(msg);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
3986
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3987 /* Try some of the more advanced functionality */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3988 list = NULL;
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3989
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3990 list = g_list_prepend(list, "item3");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3991 list = g_list_prepend(list, "item2");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3992 list = g_list_prepend(list, "item1");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3993 list = g_list_prepend(list, "item0");
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3994
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
3995 msg = msim_msg_new(NULL);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3996 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3997 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3998 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
3999 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4000 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4001
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4002 msim_msg_dump("msg with list=%s\n", msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4003 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4004
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4005 msg2 = msim_msg_new(NULL);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4006 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value"));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4007 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4008 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4009 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2));
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4010
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4011 msim_msg_free(msg2);
18879
e0cac5db762b In msim_msg_pack_element_dict(), separate keys and values with '=' for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17976
diff changeset
4012
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4013 return failures;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4014 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4015
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4016 /** Test protocol-level escaping/unescaping. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4017 int
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4018 msim_test_escaping(void)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4019 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4020 guint failures;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4021 gchar *raw, *escaped, *unescaped, *expected;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4022
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4023 failures = 0;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4024
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4025 purple_debug_info("msim", "\n\nTesting escaping\n");
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4026
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4027 raw = "hello/world\\hello/world";
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4028
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4029 escaped = msim_escape(raw);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4030 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4031 expected = "hello/1world/2hello/1world";
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
4032 if (0 != strcmp(escaped, expected)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4033 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4034 ++failures, escaped, expected);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4035 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4036
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4037
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4038 unescaped = msim_unescape(escaped);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4039 g_free(escaped);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4040 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped);
18890
00499df91ffe Use cuddled if's etc. everywhere, to better match style of Pidgin/libpurple.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18885
diff changeset
4041 if (0 != strcmp(raw, unescaped)) {
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4042 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n",
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4043 ++failures, raw, unescaped);
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4044 }
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4045
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4046 return failures;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4047 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4048 #endif
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4049
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4050 /** Initialize plugin. */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4051 void
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4052 init_plugin(PurplePlugin *plugin)
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4053 {
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4054 PurpleAccountOption *option;
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4055 #ifdef MSIM_SELF_TEST
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4056 msim_test_all();
18905
3f95e691bad2 Rewrite escaping so that it is more correct, in order to fix #2521. Test it.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18904
diff changeset
4057 exit(0);
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4058 #endif /* MSIM_SELF_TEST */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4059
18898
b94f831750e0 Clarify password-too-long error (MySpace limits it, not us), and clean up
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18897
diff changeset
4060
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4061 /* TODO: default to automatically try different ports. Make the user be
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4062 * able to set the first port to try (like LastConnectedPort in Windows client). */
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4063 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4064 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4065
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4066 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4067 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4068
18914
2b26ba483d87 Conditionally compile out a few advanced configuration options (status text
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18913
diff changeset
4069 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4070 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4071 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4072
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4073 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE);
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4074 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
18914
2b26ba483d87 Conditionally compile out a few advanced configuration options (status text
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18913
diff changeset
4075 #endif
2b26ba483d87 Conditionally compile out a few advanced configuration options (status text
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18913
diff changeset
4076
2b26ba483d87 Conditionally compile out a few advanced configuration options (status text
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18913
diff changeset
4077 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4078 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", FALSE);
17958
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
4079 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
18914
2b26ba483d87 Conditionally compile out a few advanced configuration options (status text
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18913
diff changeset
4080 #endif
17958
58c790b37e03 Add account option to send emoticons, defaulting to off since can't currently
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17957
diff changeset
4081
17967
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
4082 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4083 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI);
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
4084 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
4085
18895
f732d072b118 Change all code to better match the style of libpurple - use 8-space tabs
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18894
diff changeset
4086 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17951
diff changeset
4087 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
17967
c9acdf96e74e Update login process to more closely match official client.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17966
diff changeset
4088 #endif
18897
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4089
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4090 /* TODO: /zap command. Problem with this is that there are different kinds of zaps,
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4091 * and the selection is best made available in a drop-down menu, instead of forcing
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4092 * the user to type the kind of zap and memorizing available zaps (or putting it in the
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4093 * help menu). A new "attention" API, for zap/buzz/nudge (different protocols) will
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4094 * solve this. */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4095 #if 0
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4096 purple_cmd_register("zap", /* cmd */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4097 "w", /* args - accept a single word */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4098 PURPLE_CMD_P_PRPL, /* priority */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4099 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY, /* flags */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4100 "prpl-myspace", /* prpl_id */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4101 msim_cmd_zap, /* func */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4102 _("zap: zap a user to get their attention"), /* helpstr */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4103 NULL); /* data */
d0be4366e876 Change msim_msg_new() and msim_msg_new_v() to accept the first key name as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 18895
diff changeset
4104 #endif
17936
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4105 }
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4106
3c613fec5617 Set status to current status when signing on. This makes the "Sign in as
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
4107 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);