# HG changeset patch # User Jeffrey Connelly # Date 1181801216 0 # Node ID 1a26b36889dc075217fa87bea0593b85efa8388c # Parent df93e87739816a782c912a44ad915144664c9e8d Implement msim_get_info() for users on the user's buddy list. diff -r df93e8773981 -r 1a26b36889dc libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Thu Jun 14 01:53:58 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.c Thu Jun 14 06:06:56 2007 +0000 @@ -713,7 +713,6 @@ * @param name The buddy name to which our user is typing to * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING * - * NOT CURRENTLY USED OR COMPLETE */ unsigned int msim_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state) { @@ -740,6 +739,69 @@ return 0; } +/** Retrieve a user's profile. */ +void msim_get_info(PurpleConnection *gc, const char *name) +{ + PurpleNotifyUserInfo *user_info; + PurpleBuddy *buddy; + MsimSession *session; + + session = (MsimSession *)gc->proto_data; + + user_info = purple_notify_user_info_new(); + + buddy = purple_find_buddy(session->account, name); + if (!buddy) + { + /* TODO: profile of buddies not on blist! */ + purple_notify_user_info_add_pair(user_info, NULL, + "Sorry, currently user information can only be retrieved from users on your buddy list."); + purple_notify_userinfo(gc, name, user_info, NULL, NULL); + purple_notify_user_info_destroy(user_info); + return; + } + + + /* Identification */ + purple_notify_user_info_add_pair(user_info, "User Name", + purple_blist_node_get_string(&buddy->node, "UserName")); + + + purple_notify_user_info_add_pair(user_info, "User ID", + g_strdup_printf("%d", purple_blist_node_get_int(&buddy->node, "UserID"))); + + purple_notify_user_info_add_pair(user_info, "Display Name", + purple_blist_node_get_string(&buddy->node, "DisplayName")); + + + /* a/s/l...the vitals */ + purple_notify_user_info_add_pair(user_info, "Age", + g_strdup_printf("%d", purple_blist_node_get_int(&buddy->node, "Age"))); + + purple_notify_user_info_add_pair(user_info, "Gender", + purple_blist_node_get_string(&buddy->node, "Gender")); + + purple_notify_user_info_add_pair(user_info, "Location", + purple_blist_node_get_string(&buddy->node, "Location")); + + /* Other information */ + if (purple_blist_node_get_string(&buddy->node, "Headline")) + purple_notify_user_info_add_pair(user_info, "Headline", + purple_blist_node_get_string(&buddy->node, "Headline")); + + purple_notify_user_info_add_pair(user_info, "Song", + g_strdup_printf("%s - %s", + purple_blist_node_get_string(&buddy->node, "BandName"), + purple_blist_node_get_string(&buddy->node, "SongName"))); + + purple_notify_user_info_add_pair(user_info, "Total Friends", + g_strdup_printf("%d", purple_blist_node_get_int(&buddy->node, "TotalFriends"))); + + + purple_notify_userinfo(gc, name, user_info, NULL, NULL); + purple_notify_user_info_destroy(user_info); +} + /** After a uid is resolved to username, tag it with the username and submit for processing. * * @param session @@ -2030,7 +2092,7 @@ msim_send_im, /* send_im */ NULL, /* set_info */ msim_send_typing, /* send_typing */ - NULL, /* get_info */ + msim_get_info, /* get_info */ NULL, /* set_away */ NULL, /* set_idle */ NULL, /* change_passwd */ diff -r df93e8773981 -r 1a26b36889dc libpurple/protocols/myspace/myspace.h --- a/libpurple/protocols/myspace/myspace.h Thu Jun 14 01:53:58 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.h Thu Jun 14 06:06:56 2007 +0000 @@ -163,6 +163,7 @@ int msim_incoming_action(MsimSession *session, MsimMessage *msg); unsigned int msim_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state); +void msim_get_info(PurpleConnection *gc, const char *name); void msim_store_buddy_info_each(gpointer key, gpointer value, gpointer user_data); gboolean msim_store_buddy_info(MsimSession *session, MsimMessage *msg);