Mercurial > pidgin-twitter
comparison pidgin-twitter.c @ 200:9a2d727f39b4
removed jisko support as a protest to their expulsion policy.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 11 Aug 2008 14:31:54 +0900 |
parents | 5ddf8bee768d |
children | 0aeeafe37ef7 |
comparison
equal
deleted
inserted
replaced
199:5ddf8bee768d | 200:9a2d727f39b4 |
---|---|
22 | 22 |
23 | 23 |
24 /***********/ | 24 /***********/ |
25 /* globals */ | 25 /* globals */ |
26 /***********/ | 26 /***********/ |
27 #define NUM_REGPS 12 | 27 #define NUM_REGPS 11 |
28 #define NUM_SERVICES 4 /* twitter, wassr, identica, jisko. */ | 28 #define NUM_SERVICES 3 /* twitter, wassr, identica. */ |
29 static GRegex *regp[NUM_REGPS]; | 29 static GRegex *regp[NUM_REGPS]; |
30 static gboolean suppress_oops = FALSE; | 30 static gboolean suppress_oops = FALSE; |
31 static GHashTable *icon_hash[NUM_SERVICES]; | 31 static GHashTable *icon_hash[NUM_SERVICES]; |
32 static GHashTable *conv_hash = NULL; | 32 static GHashTable *conv_hash = NULL; |
33 static GList *statuseslist = NULL; | 33 static GList *statuseslist = NULL; |
847 format = RECIPIENT_FORMAT_WASSR; | 847 format = RECIPIENT_FORMAT_WASSR; |
848 break; | 848 break; |
849 case identica_service: | 849 case identica_service: |
850 format = RECIPIENT_FORMAT_IDENTICA; | 850 format = RECIPIENT_FORMAT_IDENTICA; |
851 break; | 851 break; |
852 case jisko_service: | |
853 format = RECIPIENT_FORMAT_JISKO; | |
854 break; | |
855 default: | 852 default: |
856 twitter_debug("unknown service\n"); | 853 twitter_debug("unknown service\n"); |
857 break; | 854 break; |
858 } | 855 } |
859 g_snprintf(sub, 128, format, match, match); | 856 g_snprintf(sub, 128, format, match, match); |
871 case wassr_service: | 868 case wassr_service: |
872 format = SENDER_FORMAT_WASSR; | 869 format = SENDER_FORMAT_WASSR; |
873 break; | 870 break; |
874 case identica_service: | 871 case identica_service: |
875 format = SENDER_FORMAT_IDENTICA; | 872 format = SENDER_FORMAT_IDENTICA; |
876 break; | |
877 case jisko_service: | |
878 format = SENDER_FORMAT_JISKO; | |
879 break; | 873 break; |
880 default: | 874 default: |
881 twitter_debug("unknown service\n"); | 875 twitter_debug("unknown service\n"); |
882 break; | 876 break; |
883 } | 877 } |
1001 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_WASSR); | 995 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_WASSR); |
1002 break; | 996 break; |
1003 case identica_service: | 997 case identica_service: |
1004 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); | 998 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); |
1005 break; | 999 break; |
1006 case jisko_service: | |
1007 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); | |
1008 break; | |
1009 } | 1000 } |
1010 | 1001 |
1011 if (screen_name) { | 1002 if (screen_name) { |
1012 m = g_strdup_printf("%s: %s", screen_name, *buffer); | 1003 m = g_strdup_printf("%s: %s", screen_name, *buffer); |
1013 g_free(*buffer); | 1004 g_free(*buffer); |
1085 if(text) | 1076 if(text) |
1086 bytes = strlen(text) + new_text_length; | 1077 bytes = strlen(text) + new_text_length; |
1087 g_free(text); | 1078 g_free(text); |
1088 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | 1079 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", |
1089 bytes <= 140 ? "black" : "red", bytes); | 1080 bytes <= 140 ? "black" : "red", bytes); |
1090 break; | |
1091 case jisko_service: | |
1092 gtk_text_buffer_get_start_iter(textbuffer, &head); | |
1093 gtk_text_buffer_get_end_iter(textbuffer, &tail); | |
1094 | |
1095 text = gtk_text_buffer_get_text(textbuffer, &head, &tail, TRUE); | |
1096 if(text) | |
1097 bytes = strlen(text) + new_text_length; | |
1098 g_free(text); | |
1099 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | |
1100 bytes >= 5 && bytes <= 140 ? | |
1101 "black" : "red", bytes); | |
1102 break; | 1081 break; |
1103 default: | 1082 default: |
1104 twitter_debug("unknown service\n"); | 1083 twitter_debug("unknown service\n"); |
1105 break; | 1084 break; |
1106 } | 1085 } |
1160 bytes -= strlen(text); | 1139 bytes -= strlen(text); |
1161 g_free(text); | 1140 g_free(text); |
1162 | 1141 |
1163 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | 1142 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", |
1164 bytes <= 140 ? "black" : "red", bytes); | 1143 bytes <= 140 ? "black" : "red", bytes); |
1165 break; | |
1166 case jisko_service: | |
1167 gtk_text_buffer_get_start_iter(textbuffer, &head); | |
1168 gtk_text_buffer_get_end_iter(textbuffer, &tail); | |
1169 | |
1170 text = gtk_text_buffer_get_text(textbuffer, | |
1171 &head, &tail, TRUE); | |
1172 if(text) | |
1173 bytes = strlen(text); | |
1174 g_free(text); | |
1175 | |
1176 text = gtk_text_buffer_get_text(textbuffer, | |
1177 start_pos, end_pos, TRUE); | |
1178 if(text) | |
1179 bytes -= strlen(text); | |
1180 g_free(text); | |
1181 | |
1182 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | |
1183 bytes >= 5 && bytes <= 140 ? | |
1184 "black" : "red", bytes); | |
1185 break; | 1144 break; |
1186 default: | 1145 default: |
1187 twitter_debug("unknown service\n"); | 1146 twitter_debug("unknown service\n"); |
1188 break; | 1147 break; |
1189 } | 1148 } |
1209 gint service = get_service_type(conv); | 1168 gint service = get_service_type(conv); |
1210 switch(service) { | 1169 switch(service) { |
1211 case twitter_service: | 1170 case twitter_service: |
1212 case wassr_service: | 1171 case wassr_service: |
1213 case identica_service: | 1172 case identica_service: |
1214 case jisko_service: | |
1215 detach_from_conv(conv, NULL); | 1173 detach_from_conv(conv, NULL); |
1216 break; | 1174 break; |
1217 default: | 1175 default: |
1218 twitter_debug("unknown service\n"); | 1176 twitter_debug("unknown service\n"); |
1219 break; | 1177 break; |
1321 /* only attach to twitter conversation window */ | 1279 /* only attach to twitter conversation window */ |
1322 switch(service) { | 1280 switch(service) { |
1323 case twitter_service: | 1281 case twitter_service: |
1324 case wassr_service: | 1282 case wassr_service: |
1325 case identica_service: | 1283 case identica_service: |
1326 case jisko_service: | |
1327 attach_to_conv(conv, NULL); | 1284 attach_to_conv(conv, NULL); |
1328 break; | 1285 break; |
1329 default: | 1286 default: |
1330 twitter_debug("unknown service\n"); | 1287 twitter_debug("unknown service\n"); |
1331 break; | 1288 break; |
1463 PurpleAccount *account = purple_conversation_get_account(conv); | 1420 PurpleAccount *account = purple_conversation_get_account(conv); |
1464 | 1421 |
1465 return is_identica_account(account, name); | 1422 return is_identica_account(account, name); |
1466 } | 1423 } |
1467 | 1424 |
1468 static gboolean | |
1469 is_jisko_account(PurpleAccount *account, const char *name) | |
1470 { | |
1471 const gchar *proto = purple_account_get_protocol_id(account); | |
1472 | |
1473 if(g_strstr_len(name, 16, "bot@jisko.net") && | |
1474 g_strstr_len(proto, 11, "prpl-jabber")) { | |
1475 return TRUE; | |
1476 } | |
1477 | |
1478 return FALSE; | |
1479 } | |
1480 | |
1481 static gboolean | |
1482 is_jisko_conv(PurpleConversation *conv) | |
1483 { | |
1484 g_return_val_if_fail(conv != NULL, FALSE); | |
1485 | |
1486 const char *name = purple_conversation_get_name(conv); | |
1487 PurpleAccount *account = purple_conversation_get_account(conv); | |
1488 | |
1489 return is_jisko_account(account, name); | |
1490 } | |
1491 | |
1492 static gint | 1425 static gint |
1493 get_service_type(PurpleConversation *conv) | 1426 get_service_type(PurpleConversation *conv) |
1494 { | 1427 { |
1495 gint service = unknown_service; | 1428 gint service = unknown_service; |
1496 | 1429 |
1500 service = twitter_service; | 1433 service = twitter_service; |
1501 else if(is_wassr_conv(conv)) | 1434 else if(is_wassr_conv(conv)) |
1502 service = wassr_service; | 1435 service = wassr_service; |
1503 else if(is_identica_conv(conv)) | 1436 else if(is_identica_conv(conv)) |
1504 service = identica_service; | 1437 service = identica_service; |
1505 else if(is_jisko_conv(conv)) | |
1506 service = jisko_service; | |
1507 | 1438 |
1508 return service; | 1439 return service; |
1509 } | 1440 } |
1510 | 1441 |
1511 static void | 1442 static void |
1528 source.conv = conv; | 1459 source.conv = conv; |
1529 attach_to_conv(conv, NULL); | 1460 attach_to_conv(conv, NULL); |
1530 break; | 1461 break; |
1531 case wassr_service: | 1462 case wassr_service: |
1532 case identica_service: | 1463 case identica_service: |
1533 case jisko_service: | |
1534 attach_to_conv(conv, NULL); | 1464 attach_to_conv(conv, NULL); |
1535 break; | 1465 break; |
1536 default: | 1466 default: |
1537 twitter_debug("unknown service\n"); | 1467 twitter_debug("unknown service\n"); |
1538 break; | 1468 break; |
1564 case wassr_service: | 1494 case wassr_service: |
1565 hash = icon_hash[wassr_service]; | 1495 hash = icon_hash[wassr_service]; |
1566 break; | 1496 break; |
1567 case identica_service: | 1497 case identica_service: |
1568 hash = icon_hash[identica_service]; | 1498 hash = icon_hash[identica_service]; |
1569 break; | |
1570 case jisko_service: | |
1571 hash = icon_hash[jisko_service]; | |
1572 break; | 1499 break; |
1573 default: | 1500 default: |
1574 twitter_debug("unknown service\n"); | 1501 twitter_debug("unknown service\n"); |
1575 break; | 1502 break; |
1576 } | 1503 } |
1705 hash = icon_hash[wassr_service]; | 1632 hash = icon_hash[wassr_service]; |
1706 break; | 1633 break; |
1707 case identica_service: | 1634 case identica_service: |
1708 hash = icon_hash[identica_service]; | 1635 hash = icon_hash[identica_service]; |
1709 break; | 1636 break; |
1710 case jisko_service: | |
1711 hash = icon_hash[jisko_service]; | |
1712 break; | |
1713 default: | 1637 default: |
1714 twitter_debug("unknown service\n"); | 1638 twitter_debug("unknown service\n"); |
1715 } | 1639 } |
1716 | 1640 |
1717 if(hash) | 1641 if(hash) |
1753 case wassr_service: | 1677 case wassr_service: |
1754 hash = icon_hash[wassr_service]; | 1678 hash = icon_hash[wassr_service]; |
1755 break; | 1679 break; |
1756 case identica_service: | 1680 case identica_service: |
1757 hash = icon_hash[identica_service]; | 1681 hash = icon_hash[identica_service]; |
1758 break; | |
1759 case jisko_service: | |
1760 hash = icon_hash[jisko_service]; | |
1761 break; | 1682 break; |
1762 default: | 1683 default: |
1763 twitter_debug("unknown service\n"); | 1684 twitter_debug("unknown service\n"); |
1764 break; | 1685 break; |
1765 } | 1686 } |
1814 } | 1735 } |
1815 else if(service == identica_service) { | 1736 else if(service == identica_service) { |
1816 data = (icon_data *)g_hash_table_lookup( | 1737 data = (icon_data *)g_hash_table_lookup( |
1817 icon_hash[identica_service], user_name); | 1738 icon_hash[identica_service], user_name); |
1818 regp_id = IMAGE_IDENTICA; | 1739 regp_id = IMAGE_IDENTICA; |
1819 } | |
1820 else if(service == jisko_service) { | |
1821 data = (icon_data *)g_hash_table_lookup( | |
1822 icon_hash[jisko_service], user_name); | |
1823 regp_id = IMAGE_JISKO; | |
1824 } | 1740 } |
1825 | 1741 |
1826 if(!url_text) { | 1742 if(!url_text) { |
1827 if(data) { | 1743 if(data) { |
1828 data->requested = FALSE; | 1744 data->requested = FALSE; |
1981 case wassr_service: | 1897 case wassr_service: |
1982 hash = icon_hash[wassr_service]; | 1898 hash = icon_hash[wassr_service]; |
1983 break; | 1899 break; |
1984 case identica_service: | 1900 case identica_service: |
1985 hash = icon_hash[identica_service]; | 1901 hash = icon_hash[identica_service]; |
1986 break; | |
1987 case jisko_service: | |
1988 hash = icon_hash[jisko_service]; | |
1989 break; | 1902 break; |
1990 default: | 1903 default: |
1991 twitter_debug("unknown service\n"); | 1904 twitter_debug("unknown service\n"); |
1992 } | 1905 } |
1993 | 1906 |
2056 suffix = "wassr"; | 1969 suffix = "wassr"; |
2057 break; | 1970 break; |
2058 case identica_service: | 1971 case identica_service: |
2059 suffix = "identica"; | 1972 suffix = "identica"; |
2060 break; | 1973 break; |
2061 case jisko_service: | |
2062 suffix = "jisko"; | |
2063 break; | |
2064 default: | 1974 default: |
2065 twitter_debug("unknown service\n"); | 1975 twitter_debug("unknown service\n"); |
2066 break; | 1976 break; |
2067 } | 1977 } |
2068 | 1978 |
2122 suffix = "wassr"; | 2032 suffix = "wassr"; |
2123 break; | 2033 break; |
2124 case identica_service: | 2034 case identica_service: |
2125 suffix = "identica"; | 2035 suffix = "identica"; |
2126 hash = icon_hash[identica_service]; | 2036 hash = icon_hash[identica_service]; |
2127 break; | |
2128 case jisko_service: | |
2129 suffix = "jisko"; | |
2130 hash = icon_hash[jisko_service]; | |
2131 break; | 2037 break; |
2132 default: | 2038 default: |
2133 twitter_debug("unknown service\n"); | 2039 twitter_debug("unknown service\n"); |
2134 break; | 2040 break; |
2135 } | 2041 } |
2212 url = g_strdup_printf("http://wassr.jp/user/%s", user_name); | 2118 url = g_strdup_printf("http://wassr.jp/user/%s", user_name); |
2213 break; | 2119 break; |
2214 case identica_service: | 2120 case identica_service: |
2215 url = g_strdup_printf("http://identi.ca/%s", user_name); | 2121 url = g_strdup_printf("http://identi.ca/%s", user_name); |
2216 break; | 2122 break; |
2217 case jisko_service: | |
2218 url = g_strdup_printf("http://jisko.net/%s", user_name); | |
2219 break; | |
2220 default: | 2123 default: |
2221 twitter_debug("unknown service\n"); | 2124 twitter_debug("unknown service\n"); |
2222 break; | 2125 break; |
2223 } | 2126 } |
2224 | 2127 |
2228 gotdata->service = service; | 2131 gotdata->service = service; |
2229 | 2132 |
2230 /* gotdata will be released in got_icon_cb */ | 2133 /* gotdata will be released in got_icon_cb */ |
2231 if(service == twitter_service || | 2134 if(service == twitter_service || |
2232 service == wassr_service || | 2135 service == wassr_service || |
2233 service == identica_service || | 2136 service == identica_service) { |
2234 service == jisko_service) { | |
2235 data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, | 2137 data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, |
2236 got_page_cb, gotdata); | 2138 got_page_cb, gotdata); |
2237 } | 2139 } |
2238 else { | 2140 else { |
2239 data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, | 2141 data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, |
2260 case wassr_service: | 2162 case wassr_service: |
2261 hash = icon_hash[wassr_service]; | 2163 hash = icon_hash[wassr_service]; |
2262 break; | 2164 break; |
2263 case identica_service: | 2165 case identica_service: |
2264 hash = icon_hash[identica_service]; | 2166 hash = icon_hash[identica_service]; |
2265 break; | |
2266 case jisko_service: | |
2267 hash = icon_hash[jisko_service]; | |
2268 break; | 2167 break; |
2269 default: | 2168 default: |
2270 twitter_debug("unknown service\n"); | 2169 twitter_debug("unknown service\n"); |
2271 break; | 2170 break; |
2272 } | 2171 } |
2362 case wassr_service: | 2261 case wassr_service: |
2363 hash = icon_hash[wassr_service]; | 2262 hash = icon_hash[wassr_service]; |
2364 break; | 2263 break; |
2365 case identica_service: | 2264 case identica_service: |
2366 hash = icon_hash[identica_service]; | 2265 hash = icon_hash[identica_service]; |
2367 break; | |
2368 case jisko_service: | |
2369 hash = icon_hash[jisko_service]; | |
2370 break; | 2266 break; |
2371 default: | 2267 default: |
2372 twitter_debug("unknown service\n"); | 2268 twitter_debug("unknown service\n"); |
2373 break; | 2269 break; |
2374 } | 2270 } |
2515 regp[USER_FORMATTED] = g_regex_new(P_USER_FORMATTED, G_REGEX_RAW, 0, NULL); | 2411 regp[USER_FORMATTED] = g_regex_new(P_USER_FORMATTED, G_REGEX_RAW, 0, NULL); |
2516 regp[CHANNEL] = g_regex_new(P_CHANNEL, 0, 0, NULL); | 2412 regp[CHANNEL] = g_regex_new(P_CHANNEL, 0, 0, NULL); |
2517 regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); | 2413 regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); |
2518 regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); | 2414 regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); |
2519 regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); | 2415 regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); |
2520 regp[IMAGE_JISKO] = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL); | |
2521 | 2416 |
2522 for(i = twitter_service; i < NUM_SERVICES; i++) { | 2417 for(i = twitter_service; i < NUM_SERVICES; i++) { |
2523 icon_hash[i] = g_hash_table_new_full(g_str_hash, g_str_equal, | 2418 icon_hash[i] = g_hash_table_new_full(g_str_hash, g_str_equal, |
2524 g_free, NULL); | 2419 g_free, NULL); |
2525 } | 2420 } |
2794 text = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); | 2689 text = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); |
2795 gtk_entry_set_text(GTK_ENTRY(e), text); | 2690 gtk_entry_set_text(GTK_ENTRY(e), text); |
2796 g_signal_connect(e, "changed", | 2691 g_signal_connect(e, "changed", |
2797 G_CALLBACK(text_changed_cb), &e); | 2692 G_CALLBACK(text_changed_cb), &e); |
2798 | 2693 |
2799 e = GTK_WIDGET(gtk_builder_get_object (builder, "account_jisko")); | |
2800 g_object_set_data(G_OBJECT(e), "pref", OPT_SCREEN_NAME_JISKO); | |
2801 text = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); | |
2802 gtk_entry_set_text(GTK_ENTRY(e), text); | |
2803 g_signal_connect(e, "changed", | |
2804 G_CALLBACK(text_changed_cb), &e); | |
2805 | |
2806 e = GTK_WIDGET(gtk_builder_get_object (builder, "account_api")); | 2694 e = GTK_WIDGET(gtk_builder_get_object (builder, "account_api")); |
2807 g_object_set_data(G_OBJECT(e), "pref", OPT_API_BASE_POST); | 2695 g_object_set_data(G_OBJECT(e), "pref", OPT_API_BASE_POST); |
2808 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), | 2696 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), |
2809 purple_prefs_get_bool(OPT_API_BASE_POST)); | 2697 purple_prefs_get_bool(OPT_API_BASE_POST)); |
2810 g_signal_connect(e, "toggled", | 2698 g_signal_connect(e, "toggled", |