src/protocols/msn/msn.c

changeset 7104
d8415ef3d687
parent 7095
17d2b54254f8
child 7108
82655fa54acb
--- a/src/protocols/msn/msn.c	Wed Oct 01 05:31:28 2003 +0000
+++ b/src/protocols/msn/msn.c	Wed Oct 01 05:42:40 2003 +0000
@@ -45,6 +45,13 @@
 
 } MsnMobileData;
 
+typedef struct
+{
+	GaimConnection *gc;
+	char *name;
+
+} MsnGetInfoData;
+
 static void
 msn_act_id(GaimConnection *gc, const char *entry)
 {
@@ -1217,16 +1224,20 @@
 static void
 msn_got_info(void *data, const char *url_text, size_t len)
 {
-	GaimConnection *gc = (GaimConnection *)data;
+	MsnGetInfoData *info_data = (MsnGetInfoData *)data;
 	char *stripped, *p, *q;
 	char buf[1024];
 	char *user_url = NULL;
 	gboolean found;
+	gboolean has_info = FALSE;
 	char *url_buffer;
 
+	gaim_debug_info("msn", "In msn_got_info\n");
+
 	if (url_text == NULL || strcmp(url_text, "") == 0)
 	{
-		gaim_notify_formatted(gc, NULL, _("Buddy Information"), NULL,
+		gaim_notify_formatted(info_data->gc, NULL,
+			_("Buddy Information"), NULL,
 			_("<html><body><b>Error retrieving profile</b></body></html>"),
 			  NULL, NULL);
 
@@ -1280,35 +1291,56 @@
 	/* Nuke the html, it's easier than trying to parse the horrid stuff */
 	stripped = gaim_markup_strip_html(url_buffer);
 
+	gaim_debug_misc("msn", "stripped = %p\n", stripped);
+	gaim_debug_misc("msn", "url_buffer = %p\n", url_buffer);
+
 	/* Gonna re-use the memory we've already got for url_buffer */
 	strcpy(url_buffer, "<html><body>\n");
 
 	/* Extract their Name and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\tName", 0, "\t",
-								   '\n', "Undisclosed", _("Name"), 0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer,
+			"\tName", 0, "\t", '\n', "Undisclosed", _("Name"), 0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/* Extract their Age and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\tAge", 0, "\t",
-								   '\n', "Undisclosed", _("Age"), 0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer, "\tAge",
+			0, "\t", '\n', "Undisclosed", _("Age"), 0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/* Extract their Gender and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\tGender", 6, "\t",
-								   '\n', "Undisclosed", _("Gender"), 0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer, "\tGender",
+			6, "\t", '\n', "Undisclosed", _("Gender"), 0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/* Extract their MaritalStatus and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\tMaritalStatus",
-								   0, "\t", '\n', "Undisclosed",
-								   _("Marital Status"), 0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer,
+			"\tMaritalStatus", 0, "\t", '\n', "Undisclosed",
+			_("Marital Status"), 0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/* Extract their Location and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\tLocation", 0,
-								   "\t", '\n', "Undisclosed", _("Location"),
-								   0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer,
+			"\tLocation", 0, "\t", '\n', "Undisclosed", _("Location"),
+			0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/* Extract their Occupation and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer, "\t Occupation", 6,
-								   "\t", '\n', "Undisclosed", _("Occupation"),
-								   0, NULL);
+	found = gaim_markup_extract_info_field(stripped, url_buffer,
+			"\t Occupation", 6, "\t", '\n', "Undisclosed", _("Occupation"),
+			0, NULL);
+
+	if (found)
+		has_info = TRUE;
 
 	/*
 	 * The fields, 'A Little About Me', 'Favorite Things', 'Hobbies
@@ -1351,6 +1383,9 @@
 				_("A Little About Me"), 0, NULL);
 	}
 
+	if (found)
+		has_info = TRUE;
+
 	/* Check if they have Favorite Things */
 	found = gaim_markup_extract_info_field(stripped, url_buffer,
 				"Favorite Things", 1, "Hobbies and Interests", '\n', NULL,
@@ -1377,6 +1412,9 @@
 				_("Favorite Things"), 0, NULL);
 	}
 
+	if (found)
+		has_info = TRUE;
+
 	/* Check if they have Hobbies and Interests */
 	found = gaim_markup_extract_info_field(stripped, url_buffer,
 			"Hobbies and Interests", 1, "Favorite Quote", '\n', NULL,
@@ -1396,6 +1434,9 @@
 				_("Hobbies and Interests"), 0, NULL);
 	}
 
+	if (found)
+		has_info = TRUE;
+
 	/* Check if they have Favorite Quote */
 	found = gaim_markup_extract_info_field(stripped, url_buffer,
 			"Favorite Quote", 1, "My Homepage\tTake a look", '\n', NULL,
@@ -1408,11 +1449,17 @@
 				_("Favorite Quote"), 0, NULL);
 	}
 
+	if (found)
+		has_info = TRUE;
+
 	/* Extract the last updated date and put it in */
-	gaim_markup_extract_info_field(stripped, url_buffer,
+	found = gaim_markup_extract_info_field(stripped, url_buffer,
 			"\tlast updated:", 1, "\n", '\n', NULL, _("Last Updated"),
 			0, NULL);
 
+	if (found)
+		has_info = TRUE;
+
 	/* If we were able to fetch a homepage url earlier, stick it in there */
 	if (user_url != NULL)
 	{
@@ -1421,26 +1468,54 @@
 				   _("Homepage"), user_url, user_url);
 
 		strcat(url_buffer, buf);
+
+		g_free(user_url);
+
+		has_info = TRUE;
 	}
 
 	/* Finish it off, and show it to them */
 	strcat(url_buffer, "</body></html>\n");
 
-	gaim_notify_formatted(gc, NULL, _("Buddy Information"), NULL,
-						  url_buffer, NULL, NULL);
+	if (has_info)
+	{
+		gaim_notify_formatted(info_data->gc, NULL, _("Buddy Information"),
+							  NULL, url_buffer, NULL, NULL);
+	}
+	else
+	{
+		char primary[256];
+
+		g_snprintf(primary, sizeof(primary),
+				   _("User information for %s unavailable"), info_data->name);
+		gaim_notify_error(info_data->gc, NULL, primary,
+						  _("The user's profile is empty."));
+	}
 
 	g_free(stripped);
 	g_free(url_buffer);
+
+	g_free(info_data->name);
+	g_free(info_data);
 }
 
 static void
 msn_get_info(GaimConnection *gc, const char *name)
 {
-	char url[256];
-	g_snprintf(url, sizeof url, "%s%s", PROFILE_URL, name);
+	MsnGetInfoData *data;
+	char *url;
+
+	data       = g_new0(MsnGetInfoData, 1);
+	data->gc   = gc;
+	data->name = g_strdup(name);
+
+	url = g_strdup_printf("%s%s", PROFILE_URL, name);
+
 	gaim_url_fetch(url, FALSE,
 				   "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", TRUE,
-				   msn_got_info, gc);
+				   msn_got_info, data);
+
+	g_free(url);
 }
 
 static GaimPluginProtocolInfo prpl_info =

mercurial