comparison libpurple/protocols/myspace/myspace.c @ 17670:7e4e3f6582d2

Add MSIM_FAKE_SELF_ONLINE preprocessor definition (which I define) to fake one's own user account always being online. This is needed because msim does not allow adding yourself to your buddy list. (Other prpls do this too, btw.)
author Jeffrey Connelly <jaconnel@calpoly.edu>
date Tue, 26 Jun 2007 05:53:52 +0000
parents d727fda5a8e1
children d43314277ccc
comparison
equal deleted inserted replaced
17669:d727fda5a8e1 17670:7e4e3f6582d2
1428 1428
1429 if (msim_msg_get(msg, "nc")) 1429 if (msim_msg_get(msg, "nc"))
1430 { 1430 {
1431 return msim_login_challenge(session, msg); 1431 return msim_login_challenge(session, msg);
1432 } else if (msim_msg_get(msg, "sesskey")) { 1432 } else if (msim_msg_get(msg, "sesskey")) {
1433
1434 purple_connection_update_progress(session->gc, _("Connected"), 3, 4); 1433 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
1435 1434
1436 session->sesskey = msim_msg_get_integer(msg, "sesskey"); 1435 session->sesskey = msim_msg_get_integer(msg, "sesskey");
1437 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); 1436 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
1438 1437
1439 /* Comes with: proof,profileid,userid,uniquenick -- all same values 1438 /* Comes with: proof,profileid,userid,uniquenick -- all same values
1440 * some of the time, but can vary. This is our own user ID. */ 1439 * some of the time, but can vary. This is our own user ID. */
1441 session->userid = msim_msg_get_integer(msg, "userid"); 1440 session->userid = msim_msg_get_integer(msg, "userid");
1442 1441
1443 /* TODO: fake our own userid being online */
1444 1442
1445 purple_connection_set_state(session->gc, PURPLE_CONNECTED); 1443 purple_connection_set_state(session->gc, PURPLE_CONNECTED);
1444
1445
1446 /* We now know are our own username, only after we're logged in..
1447 * which is weird, but happens because you login with your email
1448 * address and not username. Will be freed in msim_session_destroy(). */
1449 session->username = msim_msg_get_string(msg, "uniquenick");
1450
1451 #ifdef MSIM_FAKE_SELF_ONLINE
1452 /* Fake our self coming online. */
1453 purple_prpl_got_user_status(session->account, session->username, purple_primitive_get_id_from_type(PURPLE_STATUS_AVAILABLE), NULL);
1454 #endif
1446 1455
1447 return TRUE; 1456 return TRUE;
1448 } else if (msim_msg_get(msg, "bm")) { 1457 } else if (msim_msg_get(msg, "bm")) {
1449 guint bm; 1458 guint bm;
1450 1459
1734 default: 1743 default:
1735 purple_debug_info("msim", "msim_status_cb for %s, unknown status code %d\n", 1744 purple_debug_info("msim", "msim_status_cb for %s, unknown status code %d\n",
1736 username, status_code); 1745 username, status_code);
1737 purple_status_code = PURPLE_STATUS_AVAILABLE; 1746 purple_status_code = PURPLE_STATUS_AVAILABLE;
1738 } 1747 }
1739 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); 1748
1749 #ifdef MSIM_FAKE_SELF_ONLINE
1750 if (!strcmp(username, session->username) && purple_status_code == PURPLE_STATUS_OFFLINE)
1751 {
1752 /* Hack to ignore offline status notices on self. */
1753 } else {
1754 #endif
1755 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
1756 #ifdef MSIM_FAKE_SELF_ONLINE
1757 }
1758 #endif
1740 1759
1741 g_strfreev(status_array); 1760 g_strfreev(status_array);
1742 g_free(status_str); 1761 g_free(status_str);
1743 g_free(username); 1762 g_free(username);
1744 g_list_free(list); 1763 g_list_free(list);
2228 } 2247 }
2229 2248
2230 session->fd = source; 2249 session->fd = source;
2231 2250
2232 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc); 2251 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
2252
2253
2233 } 2254 }
2234 2255
2235 /* Session methods */ 2256 /* Session methods */
2236 2257
2237 /** 2258 /**
2251 session = g_new0(MsimSession, 1); 2272 session = g_new0(MsimSession, 1);
2252 2273
2253 session->magic = MSIM_SESSION_STRUCT_MAGIC; 2274 session->magic = MSIM_SESSION_STRUCT_MAGIC;
2254 session->account = acct; 2275 session->account = acct;
2255 session->gc = purple_account_get_connection(acct); 2276 session->gc = purple_account_get_connection(acct);
2277 session->sesskey = 0;
2278 session->userid = 0;
2279 session->username = NULL;
2256 session->fd = -1; 2280 session->fd = -1;
2257 2281
2258 /* TODO: Remove. */ 2282 /* TODO: Remove. */
2259 session->user_lookup_cb = g_hash_table_new_full(g_direct_hash, 2283 session->user_lookup_cb = g_hash_table_new_full(g_direct_hash,
2260 g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */ 2284 g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */
2281 g_return_if_fail(MSIM_SESSION_VALID(session)); 2305 g_return_if_fail(MSIM_SESSION_VALID(session));
2282 2306
2283 session->magic = -1; 2307 session->magic = -1;
2284 2308
2285 g_free(session->rxbuf); 2309 g_free(session->rxbuf);
2310 g_free(session->username);
2286 2311
2287 /* TODO: Remove. */ 2312 /* TODO: Remove. */
2288 g_hash_table_destroy(session->user_lookup_cb); 2313 g_hash_table_destroy(session->user_lookup_cb);
2289 g_hash_table_destroy(session->user_lookup_cb_data); 2314 g_hash_table_destroy(session->user_lookup_cb_data);
2290 2315