libpurple/protocols/yahoo/yahoo_aliases.c

Sat, 29 Aug 2009 00:45:37 +0000

author
Paul Aurich <darkrain42@pidgin.im>
date
Sat, 29 Aug 2009 00:45:37 +0000
branch
soc.2008.masterpassword
changeset 34021
25c14927f826
parent 27959
f842ae57da4e
child 30692
b23acf248422
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head 32da7ab6d1092d199f3c54e43644fb6303f82bd2)
to branch 'im.pidgin.soc.2008.masterpassword' (head e0ce5fb11bdba2ac134e9675ce4dffd3f43e0418)

20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
1 /*
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
2 * purple
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
3 *
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
6 * source distribution.
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
7 *
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
8 * This program is free software; you can redistribute it and/or modify
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
9 * it under the terms of the GNU General Public License as published by
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
11 * (at your option) any later version.
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
12 *
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
13 * This program is distributed in the hope that it will be useful,
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
16 * GNU General Public License for more details.
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
17 *
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
18 * You should have received a copy of the GNU General Public License
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
19 * along with this program; if not, write to the Free Software
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
21 *
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
22 */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
23
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
24
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
25 #include "internal.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
26
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
27 #include "account.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
28 #include "accountopt.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
29 #include "blist.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
30 #include "debug.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
31 #include "util.h"
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
32 #include "request.h"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
33 #include "version.h"
27555
afb7cb5c350c Update for file renames.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25766
diff changeset
34 #include "libymsg.h"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
35 #include "yahoo_aliases.h"
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
36 #include "yahoo_friend.h"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
37 #include "yahoo_packet.h"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
38
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
39 /* I hate hardcoding this stuff, but Yahoo never sends us anything to use. Someone in the know may be able to tweak this URL */
27957
41f124b67117 Update these URL's to use the correct version of the Yahoo Messenger client
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27792
diff changeset
40 #define YAHOO_ALIAS_FETCH_URL "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us&diffs=1&t=0&tags=short&rt=0&prog-ver=" YAHOO_CLIENT_VERSION "&useutf8=1&legenc=codepage-1252"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
41 #define YAHOO_ALIAS_UPDATE_URL "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us&sync=1&tags=short&noclear=1&useutf8=1&legenc=codepage-1252"
27957
41f124b67117 Update these URL's to use the correct version of the Yahoo Messenger client
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27792
diff changeset
42 #define YAHOOJP_ALIAS_FETCH_URL "http://address.yahoo.co.jp/yab/jp?v=XM&prog=ymsgr&.intl=jp&diffs=1&t=0&tags=short&rt=0&prog-ver=" YAHOOJP_CLIENT_VERSION
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
43 #define YAHOOJP_ALIAS_UPDATE_URL "http://address.yahoo.co.jp/yab/jp?v=XM&prog=ymsgr&.intl=jp&sync=1&tags=short&noclear=1"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
44
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
45 void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
46
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
47 /**
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
48 * Stuff we want passed to the callback function
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
49 */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
50 struct callback_data {
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
51 PurpleConnection *gc;
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
52 gchar *id;
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
53 gchar *who;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
54 };
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
55
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
56 void yahoo_personal_details_reset(YahooPersonalDetails *ypd, gboolean all)
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
57 {
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
58 if (all)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
59 g_free(ypd->id);
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
60 g_free(ypd->names.first);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
61 g_free(ypd->names.last);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
62 g_free(ypd->names.middle);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
63 g_free(ypd->names.nick);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
64 g_free(ypd->phone.work);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
65 g_free(ypd->phone.home);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
66 g_free(ypd->phone.mobile);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
67 }
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
68
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
69 /**************************************************************************
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
70 * Alias Fetch Functions
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
71 **************************************************************************/
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
72
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
73 static void
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
74 yahoo_fetch_aliases_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message)
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
75 {
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
76 PurpleConnection *gc = user_data;
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
77 YahooData *yd = gc->proto_data;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
78
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
79 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
80
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
81 if (len == 0) {
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
82 purple_debug_info("yahoo", "No Aliases to process.%s%s\n",
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
83 error_message ? " Error:" : "", error_message ? error_message : "");
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
84 } else {
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
85 gchar *full_name, *nick_name;
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
86 const char *yid, *id, *fn, *ln, *nn, *alias, *mn;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
87 const char *hp, *wp, *mo;
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
88 YahooFriend *f;
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
89 PurpleBuddy *b;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
90 xmlnode *item, *contacts;
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
91 PurpleAccount *account;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
92
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
93 account = purple_connection_get_account(gc);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
94 /* Put our web response into a xmlnode for easy management */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
95 contacts = xmlnode_from_str(url_text, -1);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
96
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
97 if (contacts == NULL) {
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
98 purple_debug_error("yahoo", "Badly formed Alias XML\n");
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
99 return;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
100 }
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22462
diff changeset
101 purple_debug_info("yahoo", "Fetched %" G_GSIZE_FORMAT
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22462
diff changeset
102 " bytes of alias data\n", len);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
103
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
104 /* Loop around and around and around until we have gone through all the received aliases */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
105 for(item = xmlnode_get_child(contacts, "ct"); item; item = xmlnode_get_next_twin(item)) {
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
106 /* Yahoo replies with two types of contact (ct) record, we are only interested in the alias ones */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
107 if ((yid = xmlnode_get_attrib(item, "yi"))) {
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
108 YahooPersonalDetails *ypd = NULL;
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
109 /* Grab all the bits of information we can */
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
110 fn = xmlnode_get_attrib(item, "fn");
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
111 ln = xmlnode_get_attrib(item, "ln");
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
112 nn = xmlnode_get_attrib(item, "nn");
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
113 mn = xmlnode_get_attrib(item, "mn");
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
114 id = xmlnode_get_attrib(item, "id");
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
115
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
116 hp = xmlnode_get_attrib(item, "hp");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
117 wp = xmlnode_get_attrib(item, "wp");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
118 mo = xmlnode_get_attrib(item, "mo");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
119
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
120 full_name = nick_name = NULL;
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
121 alias = NULL;
22966
35fe689e09a6 Leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
122
35fe689e09a6 Leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
123 /* Yahoo stores first and last names separately, lets put them together into a full name */
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
124 if (yd->jp)
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
125 full_name = g_strstrip(g_strdup_printf("%s %s", (ln != NULL ? ln : "") , (fn != NULL ? fn : "")));
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
126 else
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
127 full_name = g_strstrip(g_strdup_printf("%s %s", (fn != NULL ? fn : "") , (ln != NULL ? ln : "")));
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
128 nick_name = (nn != NULL ? g_strstrip(g_strdup(nn)) : NULL);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
129
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
130 if (nick_name != NULL)
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
131 alias = nick_name; /* If we have a nickname from Yahoo, let's use it */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
132 else if (strlen(full_name) != 0)
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
133 alias = full_name; /* If no Yahoo nickname, we can use the full_name created above */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
134
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
135 /* Find the local buddy that matches */
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
136 f = yahoo_friend_find(gc, yid);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
137 b = purple_find_buddy(account, yid);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
138
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
139 /* If we don't find a matching buddy, ignore the alias !! */
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
140 if (f != NULL && b != NULL) {
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
141 const char *buddy_alias = purple_buddy_get_alias(b);
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
142 yahoo_friend_set_alias_id(f, id);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
143
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
144 /* Finally, if we received an alias, we better update the buddy list */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
145 if (alias != NULL) {
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
146 serv_got_alias(gc, yid, alias);
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
147 purple_debug_info("yahoo", "Fetched alias '%s' (%s)\n", alias, id);
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
148 } else if (buddy_alias != NULL && strcmp(buddy_alias, "") != 0) {
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
149 /* Or if we have an alias that Yahoo doesn't, send it up */
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
150 yahoo_update_alias(gc, yid, buddy_alias);
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
151 purple_debug_info("yahoo", "Sent updated alias '%s'\n", buddy_alias);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
152 }
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
153 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
154
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
155 if (f != NULL)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
156 ypd = &f->ypd;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
157 else {
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
158 /* May be the alias is for the account? */
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
159 const char *yidn = purple_normalize(account, yid);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
160 if (purple_strequal(yidn, purple_connection_get_display_name(gc))) {
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
161 ypd = &yd->ypd;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
162 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
163 }
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
164
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
165 if (ypd) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
166 yahoo_personal_details_reset(ypd, TRUE);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
167 ypd->id = g_strdup(id);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
168 ypd->names.first = g_strdup(fn);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
169 ypd->names.middle = g_strdup(mn);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
170 ypd->names.last = g_strdup(ln);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
171 ypd->names.nick = g_strdup(nn);
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
172
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
173 ypd->phone.work = g_strdup(wp);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
174 ypd->phone.home = g_strdup(hp);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
175 ypd->phone.mobile = g_strdup(mo);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
176 }
22966
35fe689e09a6 Leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
177
35fe689e09a6 Leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
178 g_free(full_name);
35fe689e09a6 Leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
179 g_free(nick_name);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
180 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
181 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
182 xmlnode_free(contacts);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
183 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
184 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
185
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
186 void
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
187 yahoo_fetch_aliases(PurpleConnection *gc)
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
188 {
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
189 YahooData *yd = gc->proto_data;
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
190 const char *url;
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
191 gchar *request, *webpage, *webaddress;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
192 PurpleUtilFetchUrlData *url_data;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
193
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
194 /* use whole URL if using HTTP Proxy */
24181
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23159
diff changeset
195 gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
196
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
197 /* Build all the info to make the web request */
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
198 url = yd->jp ? YAHOOJP_ALIAS_FETCH_URL : YAHOO_ALIAS_FETCH_URL;
21092
d6fb00bf6524 Another patch from Andrew Gaul that plugs a leak:
Ka-Hing Cheung <khc@pidgin.im>
parents: 20277
diff changeset
199 purple_url_parse(url, &webaddress, NULL, &webpage, NULL, NULL);
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
200 request = g_strdup_printf("GET %s%s/%s HTTP/1.1\r\n"
25762
0c1a4287c70c Backport the parts of b859960a4a19f57f20db0536c1815a6d79e08e36 that apply to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25091
diff changeset
201 "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
202 "Cookie: T=%s; Y=%s\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
203 "Host: %s\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
204 "Cache-Control: no-cache\r\n\r\n",
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
205 use_whole_url ? "http://" : "", use_whole_url ? webaddress : "", webpage,
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
206 yd->cookie_t, yd->cookie_y,
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
207 webaddress);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
208
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
209 /* We have a URL and some header information, let's connect and get some aliases */
25766
712ab1636372 Manually apply revision 5c5977a6ed3591121ef82ff587586850b9dcd176 here. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25762
diff changeset
210 url_data = purple_util_fetch_url_request_len_with_account(purple_connection_get_account(gc),
712ab1636372 Manually apply revision 5c5977a6ed3591121ef82ff587586850b9dcd176 here. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25762
diff changeset
211 url, use_whole_url, NULL, TRUE, request, FALSE, -1,
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
212 yahoo_fetch_aliases_cb, gc);
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
213 if (url_data != NULL)
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
214 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
215
21092
d6fb00bf6524 Another patch from Andrew Gaul that plugs a leak:
Ka-Hing Cheung <khc@pidgin.im>
parents: 20277
diff changeset
216 g_free(webaddress);
d6fb00bf6524 Another patch from Andrew Gaul that plugs a leak:
Ka-Hing Cheung <khc@pidgin.im>
parents: 20277
diff changeset
217 g_free(webpage);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
218 g_free(request);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
219 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
220
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
221 /**************************************************************************
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
222 * Alias Update Functions
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
223 **************************************************************************/
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
224
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
225 static void
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
226 yahoo_update_alias_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message)
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
227 {
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
228 xmlnode *node, *result;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
229 struct callback_data *cb = user_data;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
230 PurpleConnection *gc = cb->gc;
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
231 YahooData *yd;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
232
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
233 yd = gc->proto_data;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
234 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
235
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
236 if (len == 0 || error_message != NULL) {
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
237 purple_debug_info("yahoo", "Error updating alias for %s: %s\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
238 cb->who,
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
239 error_message ? error_message : "");
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
240 g_free(cb->who);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
241 g_free(cb->id);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
242 g_free(cb);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
243 return;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
244 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
245
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
246 result = xmlnode_from_str(url_text, -1);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
247
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
248 if (result == NULL) {
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
249 purple_debug_error("yahoo", "Alias update for %s failed: Badly formed response\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
250 cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
251 g_free(cb->who);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
252 g_free(cb->id);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
253 g_free(cb);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
254 return;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
255 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
256
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
257 if ((node = xmlnode_get_child(result, "ct"))) {
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
258 if (cb->id == NULL) {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
259 const char *new_id = xmlnode_get_attrib(node, "id");
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
260 if (new_id != NULL) {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
261 /* We now have an addressbook id for the friend; we should save it */
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
262 YahooFriend *f = yahoo_friend_find(cb->gc, cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
263
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
264 purple_debug_info("yahoo", "Alias creation for %s succeeded\n", cb->who);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
265
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
266 if (f)
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
267 yahoo_friend_set_alias_id(f, new_id);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
268 else
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
269 purple_debug_error("yahoo", "Missing YahooFriend. Unable to store new addressbook id.\n");
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
270 } else
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
271 purple_debug_error("yahoo", "Missing new addressbook id in add response for %s (weird).\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
272 cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
273 } else {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
274 if (g_ascii_strncasecmp(xmlnode_get_attrib(node, "id"), cb->id, strlen(cb->id))==0)
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
275 purple_debug_info("yahoo", "Alias update for %s succeeded\n", cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
276 else
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
277 purple_debug_error("yahoo", "Alias update for %s failed (Contact record return mismatch)\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
278 cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
279 }
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
280 } else
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
281 purple_debug_info("yahoo", "Alias update for %s failed (No contact record returned)\n", cb->who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
282
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
283 g_free(cb->who);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
284 g_free(cb->id);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
285 g_free(cb);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
286 xmlnode_free(result);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
287 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
288
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
289 void
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
290 yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias)
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
291 {
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
292 YahooData *yd;
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
293 const char *url;
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
294 gchar *content, *request, *webpage, *webaddress;
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
295 struct callback_data *cb;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
296 PurpleUtilFetchUrlData *url_data;
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
297 YahooFriend *f;
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
298 /* use whole URL if using HTTP Proxy */
24181
e028e31dcc67 Do a better job of detecting if the yahoo account is connecting through a HTTP
Daniel Atallah <datallah@pidgin.im>
parents: 23159
diff changeset
299 gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
300
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
301 g_return_if_fail(who != NULL);
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
302 g_return_if_fail(gc != NULL);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
303
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
304 if (alias == NULL)
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
305 alias = "";
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
306
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
307 f = yahoo_friend_find(gc, who);
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22966
diff changeset
308 if (f == NULL) {
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
309 purple_debug_error("yahoo", "Missing YahooFriend. Unable to set server alias.\n");
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
310 return;
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
311 }
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
312
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
313 yd = gc->proto_data;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
314
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
315 /* Using callback_data so I have access to gc in the callback function */
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
316 cb = g_new0(struct callback_data, 1);
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
317 cb->who = g_strdup(who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
318 cb->id = g_strdup(yahoo_friend_get_alias_id(f));
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
319 cb->gc = gc;
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
320
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
321 /* Build all the info to make the web request */
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
322 url = yd->jp ? YAHOOJP_ALIAS_UPDATE_URL: YAHOO_ALIAS_UPDATE_URL;
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
323 purple_url_parse(url, &webaddress, NULL, &webpage, NULL, NULL);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
324
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
325 if (cb->id == NULL) {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
326 /* No id for this buddy, so create an address book entry */
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
327 purple_debug_info("yahoo", "Creating '%s' as new alias for user '%s'\n", alias, who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
328
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
329 if (yd->jp) {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
330 gchar *alias_jp = g_convert(alias, -1, "EUC-JP", "UTF-8", NULL, NULL, NULL);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
331 gchar *converted_alias_jp = yahoo_convert_to_numeric(alias_jp);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
332 content = g_strdup_printf("<ab k=\"%s\" cc=\"9\">\n"
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
333 "<ct a=\"1\" yi='%s' nn='%s' />\n</ab>\r\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
334 purple_account_get_username(gc->account),
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
335 who, converted_alias_jp);
25091
40dc2fccf9aa Use g_free instead of free here too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24181
diff changeset
336 g_free(converted_alias_jp);
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
337 g_free(alias_jp);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
338 } else {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
339 gchar *escaped_alias = g_markup_escape_text(alias, -1);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
340 content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"9\">\n"
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
341 "<ct a=\"1\" yi='%s' nn='%s' />\n</ab>\r\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
342 purple_account_get_username(gc->account),
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
343 who, escaped_alias);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
344 g_free(escaped_alias);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
345 }
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
346 } else {
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
347 purple_debug_info("yahoo", "Updating '%s' as new alias for user '%s'\n", alias, who);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
348
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
349 if (yd->jp) {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
350 gchar *alias_jp = g_convert(alias, -1, "EUC-JP", "UTF-8", NULL, NULL, NULL);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
351 gchar *converted_alias_jp = yahoo_convert_to_numeric(alias_jp);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
352 content = g_strdup_printf("<ab k=\"%s\" cc=\"1\">\n"
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
353 "<ct e=\"1\" yi='%s' id='%s' nn='%s' pr='0' />\n</ab>\r\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
354 purple_account_get_username(gc->account),
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
355 who, cb->id, converted_alias_jp);
25091
40dc2fccf9aa Use g_free instead of free here too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24181
diff changeset
356 g_free(converted_alias_jp);
23159
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
357 g_free(alias_jp);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
358 } else {
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
359 gchar *escaped_alias = g_markup_escape_text(alias, -1);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
360 content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"1\">\n"
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
361 "<ct e=\"1\" yi='%s' id='%s' nn='%s' pr='0' />\n</ab>\r\n",
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
362 purple_account_get_username(gc->account),
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
363 who, cb->id, escaped_alias);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
364 g_free(escaped_alias);
3565fd1e02c7 applied changes from 7a490c356e10f7fff3432f875897aa0ca0ad1ff0
Daniel Atallah <datallah@pidgin.im>
parents: 23157
diff changeset
365 }
22242
f2efb6941859 Patch from Yusuke Odate, modified by me, to support retrieving the full
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
366 }
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
367
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21453
diff changeset
368 request = g_strdup_printf("POST %s%s/%s HTTP/1.1\r\n"
25762
0c1a4287c70c Backport the parts of b859960a4a19f57f20db0536c1815a6d79e08e36 that apply to
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25091
diff changeset
369 "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
370 "Cookie: T=%s; Y=%s\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
371 "Host: %s\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
372 "Content-Length: %" G_GSIZE_FORMAT "\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
373 "Cache-Control: no-cache\r\n\r\n"
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
374 "%s",
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
375 use_whole_url ? "http://" : "", use_whole_url ? webaddress : "", webpage,
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
376 yd->cookie_t, yd->cookie_y,
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
377 webaddress,
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
378 strlen(content),
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
379 content);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
380
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
381 /* We have a URL and some header information, let's connect and update the alias */
25766
712ab1636372 Manually apply revision 5c5977a6ed3591121ef82ff587586850b9dcd176 here. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25762
diff changeset
382 url_data = purple_util_fetch_url_request_len_with_account(
712ab1636372 Manually apply revision 5c5977a6ed3591121ef82ff587586850b9dcd176 here. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25762
diff changeset
383 purple_connection_get_account(gc), url, use_whole_url, NULL, TRUE,
712ab1636372 Manually apply revision 5c5977a6ed3591121ef82ff587586850b9dcd176 here. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25762
diff changeset
384 request, FALSE, -1, yahoo_update_alias_cb, cb);
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
385 if (url_data != NULL)
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
386 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
387
23157
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
388 g_free(webpage);
cd30047563bf applied changes from b92fdea98a3ea454f3e9debd7f6ac17e5ae36ef6
Daniel Atallah <datallah@pidgin.im>
parents: 22980
diff changeset
389 g_free(webaddress);
20277
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
390 g_free(content);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
391 g_free(request);
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
392 }
e10c0e405cdd applied changes from b8d509fbf120a8eb57e6dfa96005e3c0312c2096
Daniel Atallah <datallah@pidgin.im>
parents: 20228
diff changeset
393
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
394
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
395 /**************************************************************************
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
396 * User Info Update Functions
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
397 **************************************************************************/
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
398
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
399 #if 0
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
400 /* This block of code can be used to send our contact details to
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
401 * everyone in the buddylist. But with the official messenger,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
402 * doing this pops a conversation window at the receiver's end,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
403 * which is stupid, and thus not really surprising. */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
404
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
405 struct yahoo_userinfo {
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
406 YahooData *yd;
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
407 char *xml;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
408 };
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
409
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
410 static void
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
411 yahoo_send_userinfo_to_user(struct yahoo_userinfo *yui, const char *who)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
412 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
413 struct yahoo_packet *pkt;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
414 PurpleConnection *gc;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
415
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
416 gc = yui->yd->gc;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
417 pkt = yahoo_packet_new(YAHOO_SERVICE_CONTACT_DETAILS, 0, 0);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
418 yahoo_packet_hash(pkt, "siisis",
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
419 1, purple_connection_get_display_name(gc),
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
420 13, 1, /* This creates a conversation window in the official client */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
421 302, 5,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
422 5, who,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
423 303, 5,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
424 280, yui->xml);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
425 yahoo_packet_send_and_free(pkt, yui->yd);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
426 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
427
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
428 static void
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
429 yahoo_send_userinfo_foreach(gpointer key, gpointer value, gpointer data)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
430 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
431 const char *who = key;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
432 YahooFriend *f = value;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
433
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
434 if (f->status != YAHOO_STATUS_OFFLINE) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
435 yahoo_send_userinfo_to_user(data, who);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
436 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
437 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
438
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
439 static void
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
440 yahoo_sent_userinfo_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
441 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
442 struct yahoo_userinfo *yui = user_data;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
443 yahoo_fetch_aliases_cb(url_data, yui->yd->gc, url_text, len, error_message);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
444 g_hash_table_foreach(yui->yd->friends, yahoo_send_userinfo_foreach, yui);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
445 g_free(yui->xml);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
446 g_free(yui);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
447 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
448 #endif
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
449
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
450 static void
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
451 yahoo_set_userinfo_cb(PurpleConnection *gc, PurpleRequestFields *fields)
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
452 {
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
453 xmlnode *node = xmlnode_new("ab");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
454 xmlnode *ct = xmlnode_new_child(node, "ct");
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
455 YahooData *yd = purple_connection_get_protocol_data(gc);
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
456 PurpleAccount *account;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
457 PurpleUtilFetchUrlData *url_data;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
458 char *webaddress, *webpage;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
459 char *request, *content;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
460 int len;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
461 int i;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
462 char * yfields[] = { "fn", "ln", "nn", "mn", "hp", "wp", "mo", NULL };
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
463
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
464 account = purple_connection_get_account(gc);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
465
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
466 xmlnode_set_attrib(node, "k", purple_connection_get_display_name(gc));
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
467 xmlnode_set_attrib(node, "cc", "1"); /* XXX: ? */
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
468
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
469 xmlnode_set_attrib(ct, "e", "1");
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
470 xmlnode_set_attrib(ct, "yi", purple_request_fields_get_string(fields, "yname"));
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
471 xmlnode_set_attrib(ct, "id", purple_request_fields_get_string(fields, "yid"));
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
472 xmlnode_set_attrib(ct, "pr", "0");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
473
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
474 for (i = 0; yfields[i]; i++) {
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
475 const char *v = purple_request_fields_get_string(fields, yfields[i]);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
476 xmlnode_set_attrib(ct, yfields[i], v ? v : "");
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
477 }
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
478
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
479 content = xmlnode_to_formatted_str(node, &len);
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
480 xmlnode_free(node);
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
481 purple_url_parse(yd->jp ? YAHOOJP_USERINFO_URL : YAHOO_USERINFO_URL, &webaddress, NULL, &webpage, NULL, NULL);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
482
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
483 request = g_strdup_printf("POST %s HTTP/1.1\r\n"
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
484 "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
485 "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n"
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
486 "Host: %s\r\n"
27726
f99e2ddab228 Build warning fix.
Paul Aurich <darkrain42@pidgin.im>
parents: 27716
diff changeset
487 "Content-Length: %d\r\n"
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
488 "Cache-Control: no-cache\r\n\r\n"
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
489 "%s\r\n\r\n",
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
490 webpage,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
491 yd->cookie_t, yd->cookie_y,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
492 webaddress,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
493 len + 4,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
494 content);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
495
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
496 #if 0
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
497 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
498 /* This is if we wanted to send our contact details to everyone
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
499 * in the buddylist. But this cannot be done now, because in the
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
500 * official messenger, doing this pops a conversation window at
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
501 * the receiver's end, which is stupid, and thus not really
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
502 * surprising. */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
503 struct yahoo_userinfo *ui = g_new(struct yahoo_userinfo, 1);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
504 node = xmlnode_new("contact");
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
505
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
506 for (i = 0; yfields[i]; i++) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
507 const char *v = purple_request_fields_get_string(fields, yfields[i]);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
508 if (v) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
509 xmlnode *nd = xmlnode_new_child(node, yfields[i]);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
510 xmlnode_insert_data(nd, v, -1);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
511 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
512 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
513
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
514 ui->yd = yd;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
515 ui->xml = xmlnode_to_str(node, NULL);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
516 xmlnode_free(node);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
517 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
518 #endif
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
519
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
520 url_data = purple_util_fetch_url_request_len_with_account(account, webaddress, FALSE,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
521 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
522 yahoo_fetch_aliases_cb, gc);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
523 if (url_data != NULL)
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
524 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
525
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
526 g_free(webaddress);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
527 g_free(webpage);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
528 g_free(content);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
529 g_free(request);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
530 }
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
531
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
532 static PurpleRequestFields *
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
533 request_fields_from_personal_details(YahooPersonalDetails *ypd, const char *id)
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
534 {
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
535 PurpleRequestFields *fields;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
536 PurpleRequestFieldGroup *group;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
537 PurpleRequestField *field;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
538 int i;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
539 struct {
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
540 char *id;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
541 char *text;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
542 char *value;
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
543 } yfields[] = {
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
544 {"fn", N_("First Name"), ypd->names.first},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
545 {"ln", N_("Last Name"), ypd->names.last},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
546 {"nn", N_("Nickname"), ypd->names.nick},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
547 {"mn", N_("Middle Name"), ypd->names.middle},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
548 {"hp", N_("Home Phone Number"), ypd->phone.home},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
549 {"wp", N_("Work Phone Number"), ypd->phone.work},
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
550 {"mo", N_("Mobile Phone Number"), ypd->phone.mobile},
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
551 {NULL, NULL, NULL}
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
552 };
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
553
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
554 fields = purple_request_fields_new();
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
555 group = purple_request_field_group_new(NULL);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
556 purple_request_fields_add_group(fields, group);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
557
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
558 field = purple_request_field_string_new("yname", "", id, FALSE);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
559 purple_request_field_set_visible(field, FALSE);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
560 purple_request_field_group_add_field(group, field);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
561
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
562 field = purple_request_field_string_new("yid", "", ypd->id, FALSE);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
563 purple_request_field_set_visible(field, FALSE);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
564 purple_request_field_group_add_field(group, field);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
565
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
566 for (i = 0; yfields[i].id; i++) {
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
567 field = purple_request_field_string_new(yfields[i].id, _(yfields[i].text),
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
568 yfields[i].value, FALSE);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
569 purple_request_field_group_add_field(group, field);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
570 }
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
571
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
572 return fields;
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
573 }
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
574
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
575 void yahoo_set_userinfo_for_buddy(PurpleConnection *gc, PurpleBuddy *buddy)
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
576 {
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
577 PurpleRequestFields *fields;
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
578 YahooFriend *f;
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
579 const char *name;
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
580
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
581 name = purple_buddy_get_name(buddy);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
582 f = yahoo_friend_find(gc, name);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
583 if (!f)
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
584 return;
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
585
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
586 fields = request_fields_from_personal_details(&f->ypd, name);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
587 purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields,
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
588 _("OK"), G_CALLBACK(yahoo_set_userinfo_cb),
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
589 _("Cancel"), NULL,
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
590 purple_connection_get_account(gc), NULL, NULL, gc);
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
591 }
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
592
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
593 void yahoo_set_userinfo(PurpleConnection *gc)
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
594 {
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
595 YahooData *yd = purple_connection_get_protocol_data(gc);
27792
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
596 PurpleRequestFields *fields = request_fields_from_personal_details(&yd->ypd,
24c414559007 Allow changing contact details for folks in the buddylist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27791
diff changeset
597 purple_connection_get_display_name(gc));
27716
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
598 purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
599 _("OK"), G_CALLBACK(yahoo_set_userinfo_cb),
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
600 _("Cancel"), NULL,
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
601 purple_connection_get_account(gc), NULL, NULL, gc);
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
602 }
a3ed37ab91b8 Allow setting some personal information for an account.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27555
diff changeset
603
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
604 static gboolean
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
605 parse_contact_details(YahooData *yd, const char *who, const char *xml)
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
606 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
607 xmlnode *node, *nd;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
608 YahooFriend *f;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
609 char *yid;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
610
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
611 node = xmlnode_from_str(xml, -1);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
612 if (!node) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
613 purple_debug_info("yahoo", "Received malformed XML for contact details from '%s':\n%s\n",
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
614 who, xml);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
615 return FALSE;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
616 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
617
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
618 nd = xmlnode_get_child(node, "yi");
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
619 if (!nd || !(yid = xmlnode_get_data(nd))) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
620 xmlnode_free(node);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
621 return FALSE;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
622 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
623
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
624 if (!purple_strequal(yid, who)) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
625 /* The user may not want to set the contact details about folks in the buddylist
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
626 to what some random dude might have sent. So it would be good if we popped
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
627 up a prompt requiring the user to confirm the details before we set them.
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
628 However, someone could send details about hundreds of users at the same time,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
629 which would make things really bad. So for now, until we have a better way of
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
630 dealing with this, ignore this details. */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
631 purple_debug_info("yahoo", "Ignoring contact details sent by %s about %s\n",
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
632 who, yid);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
633 g_free(yid);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
634 xmlnode_free(node);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
635 return FALSE;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
636 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
637
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
638 f = yahoo_friend_find(yd->gc, yid);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
639 if (!f) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
640 g_free(yid);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
641 xmlnode_free(node);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
642 return FALSE;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
643 } else {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
644 int i;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
645 YahooPersonalDetails *ypd = &f->ypd;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
646 char *alias = NULL;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
647 struct {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
648 char *id;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
649 char **field;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
650 } details[] = {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
651 {"fn", &ypd->names.first},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
652 {"mn", &ypd->names.middle},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
653 {"ln", &ypd->names.last},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
654 {"nn", &ypd->names.nick},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
655 {"wp", &ypd->phone.work},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
656 {"hp", &ypd->phone.home},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
657 {"mo", &ypd->phone.mobile},
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
658 {NULL, NULL}
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
659 };
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
660
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
661 yahoo_personal_details_reset(ypd, FALSE);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
662
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
663 for (i = 0; details[i].id; i++) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
664 nd = xmlnode_get_child(node, details[i].id);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
665 *details[i].field = nd ? xmlnode_get_data(nd) : NULL;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
666 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
667
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
668 if (ypd->names.nick)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
669 alias = ypd->names.nick;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
670 else if (ypd->names.first || ypd->names.last) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
671 alias = g_strstrip(g_strdup_printf("%s %s",
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
672 ypd->names.first ? ypd->names.first : "",
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
673 ypd->names.last ? ypd->names.last : ""));
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
674 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
675
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
676 if (alias) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
677 serv_got_alias(yd->gc, yid, alias);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
678 if (alias != ypd->names.nick)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
679 g_free(alias);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
680 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
681 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
682
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
683 xmlnode_free(node);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
684 g_free(yid);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
685 return TRUE;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
686 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
687
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
688 /* I don't think this happens for MSN buddies. -- sad */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
689 void yahoo_process_contact_details(PurpleConnection *gc, struct yahoo_packet *pkt)
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
690 {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
691 GSList *l = pkt->hash;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
692 const char *who = NULL, *xml = NULL;
27959
f842ae57da4e Move from "struct yahoo_data" to "YahooData" to be consistent with other structs
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 27957
diff changeset
693 YahooData *yd = purple_connection_get_protocol_data(gc);
27791
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
694
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
695 for (; l; l = l->next) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
696 struct yahoo_pair *pair = l->data;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
697 switch (pair->key) {
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
698 case 4:
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
699 who = pair->value; /* This is the person who sent us the details.
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
700 But not necessarily about himself. */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
701 break;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
702 case 5:
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
703 break;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
704 case 13:
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
705 /* This is '1' if 'who' is sending the contact details about herself,
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
706 '0' if 'who' is sending the contact details she has about buddies
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
707 in her list. However, in all cases, the xml in key 280 always seems
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
708 to contain the yid of the person, so we may as well ignore this field
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
709 and look into the xml instead to see who the information is about. */
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
710 break;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
711 case 280:
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
712 xml = pair->value;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
713 parse_contact_details(yd, who, xml);
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
714 break;
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
715 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
716 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
717 }
4601e7074a83 Add support for receiving contact details from buddies.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27726
diff changeset
718

mercurial