annotate libpurple/protocols/myspace/user.c @ 24781:8e75a1525156

Grab the "Who can contact me? Only people on my buddy list?" and the "Who can see when I'm online? Only people on my buddy list?" settings from the server and activate your privacy setting so that the values that you've set using the official myspace IM client will also apply when you're logged in with Pidgin. I really don't think this should be necessary at a protocol level. It's just stupid. Why wouldn't the server do this for us?
author Mark Doliner <mark@kingant.net>
date Tue, 16 Dec 2008 23:39:03 +0000
parents 5f8e8b89b143
children c044eb54b7ac 138c729f8c9a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
1 /* MySpaceIM Protocol Plugin, header file
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
2 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
3 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
4 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
5 * This program is free software; you can redistribute it and/or modify
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
6 * it under the terms of the GNU General Public License as published by
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
7 * the Free Software Foundation; either version 2 of the License, or
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
8 * (at your option) any later version.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
9 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
10 * This program is distributed in the hope that it will be useful,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
13 * GNU General Public License for more details.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
14 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
15 * You should have received a copy of the GNU General Public License
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
16 * along with this program; if not, write to the Free Software
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
18 */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
19
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
20 #include "myspace.h"
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
21
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
22 static void msim_check_username_availability_cb(PurpleConnection *gc, const char *username_to_check);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
23
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
24 static char *msim_username_to_set;
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
25
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
26 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
27 * Format the "now playing" indicator, showing the artist and song.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
28 *
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
29 * @return Return a new string (must be g_free()'d), or NULL.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
30 */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
31 static gchar *
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
32 msim_format_now_playing(const gchar *band, const gchar *song)
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
33 {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
34 if ((band && *band) || (song && *song)) {
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
35 return g_strdup_printf("%s - %s",
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
36 (band && *band) ? band : "Unknown Artist",
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
37 (song && *song) ? song : "Unknown Song");
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
38 } else {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
39 return NULL;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
40 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
41 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
42
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
43 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
44 * Get the MsimUser from a PurpleBuddy, creating it if needed.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
45 */
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
46 MsimUser *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
47 msim_get_user_from_buddy(PurpleBuddy *buddy)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
48 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
49 MsimUser *user;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
50
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
51 if (!buddy) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
52 return NULL;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
53 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
54
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
55 if (!buddy->proto_data) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
56 /* No MsimUser for this buddy; make one. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
57
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
58 /* TODO: where is this freed? */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
59 user = g_new0(MsimUser, 1);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
60 user->buddy = buddy;
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
61 user->id = purple_blist_node_get_int(&buddy->node, "UserID");
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
62 buddy->proto_data = (gpointer)user;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
63 }
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
64
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
65 user = (MsimUser *)(buddy->proto_data);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
66
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
67 return user;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
68 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
69
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
70 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
71 * Find and return an MsimUser * representing a user on the buddy list, or NULL.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
72 */
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
73 MsimUser *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
74 msim_find_user(MsimSession *session, const gchar *username)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
75 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
76 PurpleBuddy *buddy;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
77 MsimUser *user;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
78
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
79 buddy = purple_find_buddy(session->account, username);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
80 if (!buddy) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
81 return NULL;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
82 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
83
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
84 user = msim_get_user_from_buddy(buddy);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
85
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
86 return user;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
87 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
88
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
89 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
90 * Append user information to a PurpleNotifyUserInfo, given an MsimUser.
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
91 * Used by msim_tooltip_text() and msim_get_info_cb() to show a user's profile.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
92 */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
93 void
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
94 msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
95 {
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
96 PurplePresence *presence;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
97 gchar *str;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
98 guint cv;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
99
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
100 /* Useful to identify the account the tooltip refers to.
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
101 * Other prpls show this. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
102 if (user->username) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
103 purple_notify_user_info_add_pair(user_info, _("User"), user->username);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
104 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
105
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
106 /* a/s/l...the vitals */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
107 if (user->age) {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
108 char age[16];
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
109 g_snprintf(age, sizeof(age), "%d", user->age);
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
110 purple_notify_user_info_add_pair(user_info, _("Age"), age);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
111 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
112
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
113 if (user->gender && *user->gender) {
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
114 purple_notify_user_info_add_pair(user_info, _("Gender"), user->gender);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
115 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
116
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
117 if (user->location && *user->location) {
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
118 purple_notify_user_info_add_pair(user_info, _("Location"), user->location);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
119 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
120
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
121 /* Other information */
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
122 if (user->headline && *user->headline) {
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
123 purple_notify_user_info_add_pair(user_info, _("Headline"), user->headline);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
124 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
125
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
126 if (user->buddy != NULL) {
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
127 presence = purple_buddy_get_presence(user->buddy);
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
128
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
129 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
130 PurpleStatus *status;
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
131 const char *artist, *title;
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
132
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
133 status = purple_presence_get_status(presence, "tune");
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
134 title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
135 artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
136
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
137 str = msim_format_now_playing(artist, title);
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
138 if (str && *str) {
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
139 purple_notify_user_info_add_pair(user_info, _("Song"), str);
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
140 }
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
141 g_free(str);
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
142 }
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
143 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
144
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
145 /* Note: total friends only available if looked up by uid, not username. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
146 if (user->total_friends) {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
147 char friends[16];
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
148 g_snprintf(friends, sizeof(friends), "%d", user->total_friends);
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
149 purple_notify_user_info_add_pair(user_info, _("Total Friends"), friends);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
150 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
151
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
152 if (full) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
153 /* Client information */
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
154 char *client = NULL;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
155
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
156 str = user->client_info;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
157 cv = user->client_cv;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
158
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
159 if (str && cv != 0) {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
160 client = g_strdup_printf("%s (build %d)", str, cv);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
161 } else if (str) {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
162 client = g_strdup(str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
163 } else if (cv) {
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
164 client = g_strdup_printf("Build %d", cv);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
165 }
20753
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
166 if (client && *client)
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
167 purple_notify_user_info_add_pair(user_info, _("Client Version"), client);
61045691aa72 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20689
diff changeset
168 g_free(client);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
169 }
24667
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
170
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
171 if (full && user->id) {
24667
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
172 /* TODO: link to username, if available */
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
173 char *profile;
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
174 purple_notify_user_info_add_section_break(user_info);
24762
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
175 if (user->buddy != NULL)
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
176 profile = g_strdup_printf("<a href=\"http://myspace.com/%s\">%s</a>",
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
177 purple_buddy_get_name(user->buddy), _("View web profile"));
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
178 else
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
179 profile = g_strdup_printf("<a href=\"http://myspace.com/%d\">%s</a>",
694591875bc9 Use the friendly/vanity url when it's available in myspace
Mark Doliner <mark@kingant.net>
parents: 24684
diff changeset
180 user->id, _("View web profile"));
24667
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
181 purple_notify_user_info_add_pair(user_info, NULL, profile);
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
182 g_free(profile);
9fc3f5bf4455 Make our profile text a little cleaner and more uniform across the protocols.
Mark Doliner <mark@kingant.net>
parents: 23374
diff changeset
183 }
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
184 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
185
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
186 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
187 * Callback for when a buddy icon finished being downloaded.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
188 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
189 static void
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
190 msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
191 gpointer user_data,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
192 const gchar *url_text,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
193 gsize len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
194 const gchar *error_message)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
195 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
196 MsimUser *user;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
197
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
198 user = (MsimUser *)user_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
199
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
200 purple_debug_info("msim_downloaded_buddy_icon",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
201 "Downloaded %" G_GSIZE_FORMAT " bytes\n", len);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
202
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
203 if (!url_text) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
204 purple_debug_info("msim_downloaded_buddy_icon",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
205 "failed to download icon for %s",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
206 user->buddy->name);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
207 return;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
208 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
209
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
210 purple_buddy_icons_set_for_user(user->buddy->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
211 user->buddy->name,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
212 g_memdup((gchar *)url_text, len), len,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
213 /* Use URL itself as buddy icon "checksum" (TODO: ETag) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
214 user->image_url); /* checksum */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
215 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
216
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
217 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
218 * Set the currently playing song artist and or title.
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
219 *
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
220 * @param user User associated with the now playing information.
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
221 *
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
222 * @param new_artist New artist to set, or NULL/empty to not change artist.
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
223 *
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
224 * @param new_title New title to set, or NULL/empty to not change title.
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
225 *
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
226 * If new_artist and new_title are NULL/empty, deactivate PURPLE_STATUS_TUNE.
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
227 *
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
228 * This function is useful because it lets you set the artist or title
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
229 * individually, which purple_prpl_got_user_status() doesn't do.
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
230 */
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
231 static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title)
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
232 {
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
233 PurplePresence *presence;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
234 const char *prev_artist, *prev_title;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
235
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
236 if (user->buddy == NULL)
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
237 /* User not on buddy list so nothing to do */
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
238 return;
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
239
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
240 prev_artist = NULL;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
241 prev_title = NULL;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
242
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
243 if (new_artist && !*new_artist)
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
244 new_artist = NULL;
24683
1af3baa61c9f Don't create a temporary PurpleBuddy when getting info for someone not
Mark Doliner <mark@kingant.net>
parents: 24667
diff changeset
245 if (new_title && !*new_title)
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
246 new_title = NULL;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
247
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
248 if (!new_artist && !new_title) {
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
249 purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune");
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
250 return;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
251 }
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
252
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
253 presence = purple_buddy_get_presence(user->buddy);
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
254
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
255 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
256 PurpleStatus *status;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
257
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
258 status = purple_presence_get_status(presence, "tune");
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
259 prev_title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
260 prev_artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
261 }
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
262
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
263 if (!new_artist)
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
264 new_artist = prev_artist;
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
265
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
266 if (!new_title)
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
267 new_title = prev_title;
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
268
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
269 purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune",
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
270 PURPLE_TUNE_TITLE, new_title,
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
271 PURPLE_TUNE_ARTIST, new_artist,
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
272 NULL);
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
273 }
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
274
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
275 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
276 * Store a field of information about a buddy.
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
277 *
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
278 * @param key_str Key to store.
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
279 * @param value_str Value string, either user takes ownership of this string
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
280 * or it is freed if MsimUser doesn't store the string.
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
281 * @param user User to store data in. Existing data will be replaced.
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
282 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
283 static void
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
284 msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
285 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
286 if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
287 /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
288 user->id = atol(value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
289 if (user->buddy)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
290 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
291 purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
24684
128a77f3b3c4 Keep track of the user ID in the MsimUser struct so that we have a copy
Mark Doliner <mark@kingant.net>
parents: 24683
diff changeset
292 purple_blist_node_set_int(&user->buddy->node, "UserID", user->id);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
293 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
294 /* Need to store in MsimUser, too? What if not on blist? */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
295 } else if (g_str_equal(key_str, "Age")) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
296 user->age = atol(value_str);
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
297 g_free(value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
298 } else if (g_str_equal(key_str, "Gender")) {
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
299 g_free(user->gender);
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
300 user->gender = value_str;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
301 } else if (g_str_equal(key_str, "Location")) {
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
302 g_free(user->location);
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
303 user->location = value_str;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
304 } else if (g_str_equal(key_str, "TotalFriends")) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
305 user->total_friends = atol(value_str);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
306 } else if (g_str_equal(key_str, "DisplayName")) {
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
307 g_free(user->display_name);
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
308 user->display_name = value_str;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
309 } else if (g_str_equal(key_str, "BandName")) {
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
310 msim_set_artist_or_title(user, value_str, NULL);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
311 } else if (g_str_equal(key_str, "SongName")) {
22264
e808d83d797e In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 21022
diff changeset
312 msim_set_artist_or_title(user, NULL, value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
313 } else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
314 /* Ignore because PurpleBuddy knows this already */
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
315 g_free(value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
316 } else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) {
20995
87c9d114864b Fix a warning
Kevin Stange <kevin@simguy.net>
parents: 20982
diff changeset
317 const gchar *previous_url;
87c9d114864b Fix a warning
Kevin Stange <kevin@simguy.net>
parents: 20982
diff changeset
318
20982
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
319 if (user->temporary_user) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
320 /* This user will be destroyed soon; don't try to look up its image or avatar,
20982
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
321 * since that won't return immediately and we will end up accessing freed data.
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
322 */
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
323 g_free(value_str);
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
324 return;
aee8d876fed1 When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evan.s@dreskin.net>
parents: 20753
diff changeset
325 }
21022
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
326
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
327 if (user->temporary_user) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
328 /* This user will be destroyed soon; don't try to look up its image or avatar,
21022
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
329 * since that won't return immediately and we will end up accessing freed data.
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
330 */
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
331 g_free(value_str);
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
332 return;
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
333 }
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
334
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
335 g_free(user->image_url);
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
336
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
337 user->image_url = value_str;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
338
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
339 /* Instead of showing 'no photo' picture, show nothing. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
340 if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
341 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
342 purple_buddy_icons_set_for_user(user->buddy->account,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
343 user->buddy->name,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
344 NULL, 0, NULL);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
345 return;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
346 }
21022
3f8b32a4786c Fix this warning:
Stu Tomlinson <stu@nosnilmot.com>
parents: 21000
diff changeset
347
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
348 /* TODO: use ETag for checksum */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
349 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
350
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
351 /* Only download if URL changed */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
352 if (!previous_url || !g_str_equal(previous_url, user->image_url)) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
353 purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
354 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
355 } else if (g_str_equal(key_str, "LastImageUpdated")) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
356 /* TODO: use somewhere */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
357 user->last_image_updated = atol(value_str);
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
358 g_free(value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
359 } else if (g_str_equal(key_str, "Headline")) {
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
360 g_free(user->headline);
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
361 user->headline = value_str;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
362 } else {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
363 /* TODO: other fields in MsimUser */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
364 gchar *msg;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
365
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
366 msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s",
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
367 key_str, value_str);
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
368 g_free(value_str);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
369
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
370 msim_unrecognized(NULL, NULL, msg);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
371
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
372 g_free(msg);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
373 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
374 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
375
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
376 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
377 * Save buddy information to the buddy list from a user info reply message.
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
378 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
379 * @param session
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
380 * @param msg The user information reply, with any amount of information.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
381 * @param user The structure to save to, or NULL to save in PurpleBuddy->proto_data.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
382 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
383 * Variable information is saved to the passed MsimUser structure. Permanent
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
384 * information (UserID) is stored in the blist node of the buddy list (and
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
385 * ends up in blist.xml, persisted to disk) if it exists.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
386 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
387 * If the function has no buddy information, this function
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
388 * is a no-op (and returns FALSE).
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
389 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
390 gboolean
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
391 msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
392 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
393 gchar *username;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
394 MsimMessage *body, *body_node;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
395
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
396 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
397 g_return_val_if_fail(msg != NULL, FALSE);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
398
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
399 body = msim_msg_get_dictionary(msg, "body");
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
400 if (!body) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
401 return FALSE;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
402 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
403
24781
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
404 if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN &&
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
405 msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) {
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
406 /*
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
407 * Some of this info will be available on the buddy list if the
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
408 * has themselves as their own buddy.
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
409 *
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
410 * Much of the info is already available in MsimSession,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
411 * stored in msim_we_are_logged_on().
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
412 */
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
413 gchar *tmpstr;
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
414
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
415 tmpstr = msim_msg_get_string(body, "ShowOnlyToList");
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
416 if (tmpstr != NULL) {
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
417 session->show_only_to_list = g_str_equal(tmpstr, "True");
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
418 g_free(tmpstr);
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
419 }
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
420
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
421 session->privacy_mode = msim_msg_get_integer(body, "PrivacyMode");
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
422 session->offline_message_mode = msim_msg_get_integer(body, "OfflineMessageMode");
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
423
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
424 msim_send(session,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
425 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
426 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
427 "idlist", MSIM_TYPE_STRING,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
428 g_strdup_printf("w%d|c%d",
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
429 session->show_only_to_list ? 1 : 0,
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
430 session->privacy_mode),
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
431 NULL);
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
432 } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN &&
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
433 msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) {
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
434 /* TODO: same as above, but for MySpace info. */
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
435 }
8e75a1525156 Grab the "Who can contact me? Only people on my buddy list?" and the
Mark Doliner <mark@kingant.net>
parents: 24778
diff changeset
436
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
437 username = msim_msg_get_string(body, "UserName");
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
438
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
439 if (!username) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
440 purple_debug_info("msim",
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
441 "msim_process_reply: not caching body, no UserName\n");
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
442 msim_msg_free(body);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
443 g_free(username);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
444 return FALSE;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
445 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
446
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
447 /* Null user = find and store in PurpleBuddy's proto_data */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
448 if (!user) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
449 user = msim_find_user(session, username);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
450 if (!user) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
451 msim_msg_free(body);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
452 g_free(username);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
453 return FALSE;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
454 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
455 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
456
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
457 /* TODO: make looping over MsimMessage's easier. */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
458 for (body_node = body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
459 body_node != NULL;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
460 body_node = msim_msg_get_next_element_node(body_node))
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
461 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
462 const gchar *key_str;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
463 gchar *value_str;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
464 MsimMessageElement *elem;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
465
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
466 elem = (MsimMessageElement *)body_node->data;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
467 key_str = elem->name;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
468
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
469 value_str = msim_msg_get_string_from_element(elem);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
470 msim_store_user_info_each(key_str, value_str, user);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
471 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
472
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
473 msim_msg_free(body);
20150
52dce2882c03 Fix a few memory leaks in #3281 (details in ticket).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20147
diff changeset
474 g_free(username);
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
475
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
476 return TRUE;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
477 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
478
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
479 #if 0
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
480 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
481 * Return whether a given username is syntactically valid.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
482 * Note: does not actually check that the user exists.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
483 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
484 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
485 msim_is_valid_username(const gchar *user)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
486 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
487 return !msim_is_userid(user) && /* Not all numeric */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
488 strlen(user) <= MSIM_MAX_USERNAME_LENGTH
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
489 && strspn(user, "0123456789"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
490 "abcdefghijklmnopqrstuvwxyz"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
491 "_"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
492 "ABCDEFGHIJKLMNOPQRSTUVWXYZ") == strlen(user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
493 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
494 #endif
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
495
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
496 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
497 * Check if a string is a userid (all numeric).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
498 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
499 * @param user The user id, email, or name.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
500 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
501 * @return TRUE if is userid, FALSE if not.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
502 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
503 gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
504 msim_is_userid(const gchar *user)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
505 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
506 g_return_val_if_fail(user != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
507
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
508 return strspn(user, "0123456789") == strlen(user);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
509 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
510
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
511 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
512 * Check if a string is an email address (contains an @).
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
513 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
514 * @param user The user id, email, or name.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
515 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
516 * @return TRUE if is an email, FALSE if not.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
517 *
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
518 * This function is not intended to be used as a generic
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
519 * means of validating email addresses, but to distinguish
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
520 * between a user represented by an email address from
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
521 * other forms of identification.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
522 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
523 static gboolean
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
524 msim_is_email(const gchar *user)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
525 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
526 g_return_val_if_fail(user != NULL, FALSE);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
527
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
528 return strchr(user, '@') != NULL;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
529 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
530
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
531 /**
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
532 * Asynchronously lookup user information, calling callback when receive result.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
533 *
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
534 * @param session
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
535 * @param user The user id, email address, or username. Not freed.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
536 * @param cb Callback, called with user information when available.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
537 * @param data An arbitray data pointer passed to the callback.
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
538 */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
539 /* TODO: change to not use callbacks */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
540 void
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
541 msim_lookup_user(MsimSession *session, const gchar *user, MSIM_USER_LOOKUP_CB cb, gpointer data)
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
542 {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
543 MsimMessage *body;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
544 gchar *field_name;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
545 guint rid, cmd, dsn, lid;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
546
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
547 g_return_if_fail(MSIM_SESSION_VALID(session));
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
548 g_return_if_fail(user != NULL);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
549 /* Callback can be null to not call anything, just lookup & store information. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
550 /*g_return_if_fail(cb != NULL);*/
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
551
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
552 purple_debug_info("msim", "msim_lookup_userid: "
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
553 "asynchronously looking up <%s>\n", user);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
554
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
555 /* Setup callback. Response will be associated with request using 'rid'. */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
556 rid = msim_new_reply_callback(session, cb, data);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
557
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
558 /* Send request */
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
559
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
560 cmd = MSIM_CMD_GET;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
561
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
562 if (msim_is_userid(user)) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
563 field_name = "UserID";
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
564 dsn = MG_MYSPACE_INFO_BY_ID_DSN;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
565 lid = MG_MYSPACE_INFO_BY_ID_LID;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
566 } else if (msim_is_email(user)) {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
567 field_name = "Email";
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
568 dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
569 lid = MG_MYSPACE_INFO_BY_STRING_LID;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
570 } else {
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
571 field_name = "UserName";
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
572 dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
573 lid = MG_MYSPACE_INFO_BY_STRING_LID;
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
574 }
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
575
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
576 body = msim_msg_new(
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
577 field_name, MSIM_TYPE_STRING, g_strdup(user),
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
578 NULL);
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
579
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
580 g_return_if_fail(msim_send(session,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
581 "persist", MSIM_TYPE_INTEGER, 1,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
582 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
583 "cmd", MSIM_TYPE_INTEGER, 1,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
584 "dsn", MSIM_TYPE_INTEGER, dsn,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
585 "uid", MSIM_TYPE_INTEGER, session->userid,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
586 "lid", MSIM_TYPE_INTEGER, lid,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
587 "rid", MSIM_TYPE_INTEGER, rid,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
588 "body", MSIM_TYPE_DICTIONARY, body,
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
589 NULL));
22305
bf4902fce6e4 In msimprpl, add msim_is_valid_username() to check whether a username
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22304
diff changeset
590 }
bf4902fce6e4 In msimprpl, add msim_is_valid_username() to check whether a username
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22304
diff changeset
591
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
592 /**
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
593 * Called after username is set.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
594 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
595 static void msim_username_is_set_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
596 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
597 gchar *username, *errmsg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
598 MsimMessage *body;
20257
1141d47b162c Kill CRLF line-endings to make sure this compiles on Solaris. This is a
Richard Laager <rlaager@wiktel.com>
parents: 19681
diff changeset
599
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
600 guint rid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
601 gint cmd,dsn,uid,lid,code;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
602 /* \persistr\\cmd\258\dsn\9\uid\204084363\lid\14\rid\369\body\UserName=TheAlbinoRhino1.Code=0\final\ */
22303
1097406c8f6c In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22302
diff changeset
603
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
604 purple_debug_info("msim","username_is_set made\n");
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
605
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
606 g_return_if_fail(MSIM_SESSION_VALID(session));
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
607
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
608 cmd = msim_msg_get_integer(userinfo, "cmd");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
609 dsn = msim_msg_get_integer(userinfo, "dsn");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
610 uid = msim_msg_get_integer(userinfo, "uid");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
611 lid = msim_msg_get_integer(userinfo, "lid");
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
612 body = msim_msg_get_dictionary(userinfo, "body");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
613 errmsg = g_strdup("An error occurred while trying to set the username.\n"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
614 "Please try again, or visit http://editprofile.myspace.com/index.cfm?"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
615 "fuseaction=profile.username to set your username.");
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
616
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
617 if (!body) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
618 purple_debug_info("msim_username_is_set_cb", "No body");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
619 /* Error: No body! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
620 purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, errmsg);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
621 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
622 username = msim_msg_get_string(body, "UserName");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
623 code = msim_msg_get_integer(body,"Code");
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
624
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
625 msim_msg_free(body);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
626
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
627 purple_debug_info("msim_username_is_set_cb",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
628 "cmd = %d, dsn = %d, lid = %d, code = %d, username = %s\n",
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
629 cmd, dsn, lid, code, username);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
630
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
631 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_PUT)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
632 && dsn == MC_SET_USERNAME_DSN
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
633 && lid == MC_SET_USERNAME_LID)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
634 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
635 purple_debug_info("msim_username_is_set_cb", "Proper cmd,dsn,lid for username_is_set!\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
636 purple_debug_info("msim_username_is_set_cb", "Username Set with return code %d\n",code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
637 if (code == 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
638 /* Good! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
639 session->username = username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
640 msim_we_are_logged_on(session);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
641 } else {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
642 purple_debug_info("msim_username_is_set", "code is %d",code);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
643 /* TODO: what to do here? */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
644 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
645 } else if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
646 && dsn == MG_MYSPACE_INFO_BY_STRING_DSN
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
647 && lid == MG_MYSPACE_INFO_BY_STRING_LID) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
648 /* Not quite done... ONE MORE STEP :) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
649 rid = msim_new_reply_callback(session, msim_username_is_set_cb, data);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
650 body = msim_msg_new("UserName", MSIM_TYPE_STRING, g_strdup(username), NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
651 if (!msim_send(session, "persist", MSIM_TYPE_INTEGER, 1,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
652 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
653 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
654 "dsn", MSIM_TYPE_INTEGER, MC_SET_USERNAME_DSN,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
655 "uid", MSIM_TYPE_INTEGER, session->userid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
656 "lid", MSIM_TYPE_INTEGER, MC_SET_USERNAME_LID,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
657 "rid", MSIM_TYPE_INTEGER, rid,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
658 "body", MSIM_TYPE_DICTIONARY, body,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
659 NULL)) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
660 /* Error! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
661 /* Can't set... Disconnect */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
662 purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, errmsg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
663 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
664
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
665 } else {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
666 /* Error! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
667 purple_debug_info("msim","username_is_set Error: Invalid cmd/dsn/lid combination");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
668 purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, errmsg);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
669 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
670 g_free(errmsg);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
671 }
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
672
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
673 /**
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
674 * Asynchronously set new username, calling callback when receive result.
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
675 *
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
676 * @param session
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
677 * @param username The username we're setting for ourselves. Not freed.
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
678 * @param cb Callback, called with user information when available.
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
679 * @param data An arbitray data pointer passed to the callback.
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
680 */
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
681 static void
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
682 msim_set_username(MsimSession *session, const gchar *username,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
683 MSIM_USER_LOOKUP_CB cb, gpointer data)
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
684 {
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
685 MsimMessage *body;
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
686 guint rid;
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
687
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
688 g_return_if_fail(MSIM_SESSION_VALID(session));
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
689 g_return_if_fail(username != NULL);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
690 g_return_if_fail(cb != NULL);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
691
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
692 purple_debug_info("msim", "msim_set_username: "
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
693 "Setting username %s\n", username);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
694
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
695 /* Setup callback. Response will be associated with request using 'rid'. */
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
696 rid = msim_new_reply_callback(session, cb, data);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
697
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
698 /* TODO: I dont know if the ContactType is -/ALWAYS/- 1 */
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
699
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
700 body = msim_msg_new("UserName", MSIM_TYPE_STRING, g_strdup(username),NULL);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
701 /* \setinfo\\sesskey\469958979\info\Age=21.AvatarUrl=.BandName=.ContactType=1.DisplayName=Msim.Gender=M.ImageURL=http:/1/1x.myspace.com/1images/1no_pic.gif.LastLogin=128335268400000000.Location=US.ShowAvatar=False.SongName=.TotalFriends=1.UserName=msimprpl2\final\
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
702 */
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
703
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
704 /* Send request */
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
705 g_return_if_fail(msim_send(session,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
706 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
707 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
708 "info", MSIM_TYPE_DICTIONARY, body,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
709 NULL));
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
710 body = msim_msg_new("UserName", MSIM_TYPE_STRING, g_strdup(username),NULL);
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
711 g_return_if_fail(msim_send(session,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
712 "persist", MSIM_TYPE_INTEGER, 1,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
713 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
22304
c3dc9e0d2c08 In msimprpl, define a new set of symbolic constants for the command to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22303
diff changeset
714 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
c3dc9e0d2c08 In msimprpl, define a new set of symbolic constants for the command to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22303
diff changeset
715 "dsn", MSIM_TYPE_INTEGER, MG_MYSPACE_INFO_BY_STRING_DSN,
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
716 "uid", MSIM_TYPE_INTEGER, session->userid,
22304
c3dc9e0d2c08 In msimprpl, define a new set of symbolic constants for the command to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22303
diff changeset
717 "lid", MSIM_TYPE_INTEGER, MG_MYSPACE_INFO_BY_STRING_LID,
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
718 "rid", MSIM_TYPE_INTEGER, rid,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
719 "body", MSIM_TYPE_DICTIONARY, body,
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
720 NULL));
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
721 }
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
722
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
723 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
724 * They've confirmed that username that was available, Lets make the call to set it
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
725 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
726 static void msim_set_username_confirmed_cb(PurpleConnection *gc)
22303
1097406c8f6c In msimprpl, change to patch from Jaywalker regarding setting
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22302
diff changeset
727 {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
728 MsimMessage *user_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
729 MsimSession *session;
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
730
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
731 g_return_if_fail(gc != NULL);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
732
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
733 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
734
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
735 g_return_if_fail(MSIM_SESSION_VALID(session));
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
736
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
737
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
738 user_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
739 "user", MSIM_TYPE_STRING, g_strdup(msim_username_to_set),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
740 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
741
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
742 purple_debug_info("msim_set_username_confirmed_cb", "Setting username to %s\n", msim_username_to_set);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
743
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
744 /* Sets our username... keep your fingers crossed :) */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
745 msim_set_username(session, msim_username_to_set, msim_username_is_set_cb, user_msg);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
746 g_free(msim_username_to_set);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
747 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
748
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
749 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
750 * This is where we do a bit more than merely prompt the user.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
751 * Now we have some real data to tell us the state of their requested username
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
752 * \persistr\\cmd\257\dsn\5\uid\204084363\lid\7\rid\367\body\UserName=TheAlbinoRhino1\final\
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
753 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
754 static void msim_username_is_available_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
755 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
756 MsimMessage *msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
757 gchar *username;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
758 MsimMessage *body;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
759 gint userid;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
760
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
761 purple_debug_info("msim_username_is_available_cb", "Look up username callback made\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
762
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
763 msg = (MsimMessage *)data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
764 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
765 g_return_if_fail(msg != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
766
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
767 username = msim_msg_get_string(msg, "user");
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
768 body = msim_msg_get_dictionary(userinfo, "body");
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
769
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
770 if (!body) {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
771 purple_debug_info("msim_username_is_available_cb", "No body for %s?!\n", username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
772 purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
773 "An error occurred while trying to set the username.\n"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
774 "Please try again, or visit http://editprofile.myspace.com/index.cfm?"
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
775 "fuseaction=profile.username to set your username.");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
776 return;
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
777 }
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
778
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
779 userid = msim_msg_get_integer(body, "UserID");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
780
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
781 purple_debug_info("msim_username_is_available_cb", "Returned username is %s and userid is %d\n", username, userid);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
782 msim_msg_free(body);
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
783 msim_msg_free(msg);
22304
c3dc9e0d2c08 In msimprpl, define a new set of symbolic constants for the command to
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22303
diff changeset
784
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
785 /* The response for a free username will ONLY have the UserName in it..
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
786 * thus making UserID return 0 when we msg_get_integer it */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
787 if (userid == 0) {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
788 /* This username is currently unused */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
789 purple_debug_info("msim_username_is_available_cb", "Username available. Prompting to Confirm.\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
790 msim_username_to_set = g_strdup(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
791 g_free(username);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
792 purple_request_yes_no(session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
793 _("MySpaceIM - Username Available"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
794 _("This username is available. Would you like to set it?"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
795 _("ONCE SET, THIS CANNOT BE CHANGED!"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
796 0,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
797 session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
798 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
799 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
800 session->gc,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
801 G_CALLBACK(msim_set_username_confirmed_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
802 G_CALLBACK(msim_do_not_set_username_cb));
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
803 } else {
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
804 /* Looks like its in use or we have an invalid response */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
805 purple_debug_info("msim_username_is_available_cb", "Username unavaiable. Prompting for new entry.\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
806 purple_request_input(session->gc, _("MySpaceIM - Please Set a Username"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
807 _("This username is unavailable."),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
808 _("Please try another username:"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
809 "", FALSE, FALSE, NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
810 _("OK"), G_CALLBACK(msim_check_username_availability_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
811 _("Cancel"), G_CALLBACK(msim_do_not_set_username_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
812 session->account,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
813 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
814 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
815 session->gc);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
816 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
817 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
818
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
819 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
820 * Once they've submitted their desired new username,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
821 * check if it is available here.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
822 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
823 static void msim_check_username_availability_cb(PurpleConnection *gc, const char *username_to_check)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
824 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
825 MsimMessage *user_msg;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
826 MsimSession *session;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
827
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
828 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
829
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
830 session = (MsimSession *)gc->proto_data;
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
831
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
832 g_return_if_fail(MSIM_SESSION_VALID(session));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
833
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
834 purple_debug_info("msim_check_username_availability_cb", "Checking username: %s\n", username_to_check);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
835
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
836 user_msg = msim_msg_new(
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
837 "user", MSIM_TYPE_STRING, g_strdup(username_to_check),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
838 NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
839
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
840 /* 25 characters: letters, numbers, underscores */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
841 /* TODO: VERIFY ABOVE */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
842
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
843 /* \persist\1\sesskey\288500516\cmd\1\dsn\5\uid\204084363\lid\7\rid\367\body\UserName=Jaywalker\final\ */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
844 /* Official client uses a standard lookup... So do we! */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
845 msim_lookup_user(session, username_to_check, msim_username_is_available_cb, user_msg);
22302
0e2207b46080 In msimprpl, if the user signs in without any username set (this will happen
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 22264
diff changeset
846 }
24767
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
847
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
848 /***
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
849 * If they hit cancel or no at any point in the Setting Username process,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
850 * we come here. Currently we're safe letting them get by without
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
851 * setting it, unless we hear otherwise. So for now give them a menu.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
852 * If this becomes an issue with the official client then boot them here.
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
853 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
854 void msim_do_not_set_username_cb(PurpleConnection *gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
855 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
856 purple_debug_info("msim", "Don't set username");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
857
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
858 /* Protocol won't log in now without a username set.. Disconnect */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
859 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, _("No username set"));
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
860 }
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
861
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
862 /**
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
863 * They've decided to set a username! Yay!
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
864 */
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
865 void msim_set_username_cb(PurpleConnection *gc)
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
866 {
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
867 g_return_if_fail(gc != NULL);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
868 purple_debug_info("msim","Set username\n");
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
869 purple_request_input(gc, _("MySpaceIM - Please Set a Username"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
870 _("Please enter a username to check its availability:"),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
871 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
872 "", FALSE, FALSE, NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
873 _("OK"), G_CALLBACK(msim_check_username_availability_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
874 _("Cancel"), G_CALLBACK(msim_do_not_set_username_cb),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
875 purple_connection_get_account(gc),
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
876 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
877 NULL,
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
878 gc);
295464ae2d2a No functionality change--just cleanup.
Mark Doliner <mark@kingant.net>
parents: 24762
diff changeset
879 }