Mercurial > pidgin-twitter
comparison pidgin-twitter.h @ 240:405f8b880142
restored jisko support.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 07 Oct 2008 16:44:02 +0900 |
parents | e3a24c98772d |
children | bd7478109727 |
comparison
equal
deleted
inserted
replaced
239:e3a24c98772d | 240:405f8b880142 |
---|---|
30 SENDER, | 30 SENDER, |
31 COMMAND, | 31 COMMAND, |
32 PSEUDO, | 32 PSEUDO, |
33 USER, | 33 USER, |
34 CHANNEL_WASSR, | 34 CHANNEL_WASSR, |
35 TAG_IDENTICA, | |
35 IMAGE_TWITTER, | 36 IMAGE_TWITTER, |
36 IMAGE_WASSR, | 37 IMAGE_WASSR, |
37 IMAGE_IDENTICA, | 38 IMAGE_IDENTICA, |
38 TAG_IDENTICA, | 39 IMAGE_JISKO, |
39 SIZE_128_WASSR, | 40 SIZE_128_WASSR, |
40 EXCESS_LF | 41 EXCESS_LF |
41 }; | 42 }; |
42 | 43 |
43 /* service id */ | 44 /* service id */ |
44 enum { | 45 enum { |
45 unknown_service = -1, | 46 unknown_service = -1, |
46 twitter_service, | 47 twitter_service, |
47 wassr_service, | 48 wassr_service, |
48 identica_service | 49 identica_service, |
50 jisko_service | |
49 }; | 51 }; |
50 | 52 |
51 /* container to hold icon data */ | 53 /* container to hold icon data */ |
52 typedef struct _icon_data { | 54 typedef struct _icon_data { |
53 GdkPixbuf *pixbuf; /* icon pixmap */ | 55 GdkPixbuf *pixbuf; /* icon pixmap */ |
110 #define OPT_ICON_DIR OPT_PIDGINTWITTER "/icon_dir" | 112 #define OPT_ICON_DIR OPT_PIDGINTWITTER "/icon_dir" |
111 #define OPT_API_BASE_POST OPT_PIDGINTWITTER "/api_base_post" | 113 #define OPT_API_BASE_POST OPT_PIDGINTWITTER "/api_base_post" |
112 #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" | 114 #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" |
113 #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" | 115 #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" |
114 #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" | 116 #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" |
117 #define OPT_SCREEN_NAME_JISKO OPT_PIDGINTWITTER "/screen_name_jisko" | |
115 #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" | 118 #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" |
116 #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" | 119 #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" |
117 #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" | 120 #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" |
118 #define OPT_UPDATE_ICON OPT_PIDGINTWITTER "/update_icon" | 121 #define OPT_UPDATE_ICON OPT_PIDGINTWITTER "/update_icon" |
119 #define OPT_ICON_MAX_COUNT OPT_PIDGINTWITTER "/icon_max_count" | 122 #define OPT_ICON_MAX_COUNT OPT_PIDGINTWITTER "/icon_max_count" |
123 #define OPT_FILTER OPT_PIDGINTWITTER "/filter" | 126 #define OPT_FILTER OPT_PIDGINTWITTER "/filter" |
124 #define OPT_FILTER_EXCLUDE_REPLY OPT_PIDGINTWITTER "/filter_exclude_reply" | 127 #define OPT_FILTER_EXCLUDE_REPLY OPT_PIDGINTWITTER "/filter_exclude_reply" |
125 #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" | 128 #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" |
126 #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" | 129 #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" |
127 #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" | 130 #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" |
131 #define OPT_FILTER_JISKO OPT_PIDGINTWITTER "/filter_jisko" | |
128 #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" | 132 #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" |
129 | 133 |
130 #ifdef _WIN32 | 134 #ifdef _WIN32 |
131 #define OPT_PIDGIN_BLINK_IM PIDGIN_PREFS_ROOT "/win32/blink_im" | 135 #define OPT_PIDGIN_BLINK_IM PIDGIN_PREFS_ROOT "/win32/blink_im" |
132 #endif | 136 #endif |
136 #define SENDER_FORMAT_TWITTER "%s<a href='http://twitter.com/%s'>%s</a>: " | 140 #define SENDER_FORMAT_TWITTER "%s<a href='http://twitter.com/%s'>%s</a>: " |
137 #define RECIPIENT_FORMAT_WASSR "%s@<a href='http://wassr.jp/user/%s'>%s</a>" | 141 #define RECIPIENT_FORMAT_WASSR "%s@<a href='http://wassr.jp/user/%s'>%s</a>" |
138 #define SENDER_FORMAT_WASSR "%s<a href='http://wassr.jp/user/%s'>%s</a>: " | 142 #define SENDER_FORMAT_WASSR "%s<a href='http://wassr.jp/user/%s'>%s</a>: " |
139 #define RECIPIENT_FORMAT_IDENTICA "%s@<a href='http://identi.ca/%s'>%s</a>" | 143 #define RECIPIENT_FORMAT_IDENTICA "%s@<a href='http://identi.ca/%s'>%s</a>" |
140 #define SENDER_FORMAT_IDENTICA "%s<a href='http://identi.ca/%s'>%s</a>: " | 144 #define SENDER_FORMAT_IDENTICA "%s<a href='http://identi.ca/%s'>%s</a>: " |
145 #define RECIPIENT_FORMAT_JISKO "@<a href='http://jisko.net/%s'>%s</a>" | |
146 #define SENDER_FORMAT_JISKO "%s<a href='http://jisko.net/%s'>%s</a>: " | |
141 #define CHANNEL_FORMAT_WASSR "%s<a href='http://wassr.jp/channel/%s'>%s</a> " | 147 #define CHANNEL_FORMAT_WASSR "%s<a href='http://wassr.jp/channel/%s'>%s</a> " |
142 #define CHANNEL_FORMAT_IDENTICA "%s<a href='http://identi.ca/tag/%s'>%s</a> " | 148 #define CHANNEL_FORMAT_IDENTICA "%s<a href='http://identi.ca/tag/%s'>%s</a> " |
143 #define TAG_FORMAT_IDENTICA "#<a href='http://identi.ca/tag/%s'>%s</a>" | 149 #define TAG_FORMAT_IDENTICA "#<a href='http://identi.ca/tag/%s'>%s</a>" |
144 | 150 |
145 #define DEFAULT_LIST "(list of users: separated with ' ,:;')" | 151 #define DEFAULT_LIST "(list of users: separated with ' ,:;')" |
151 #define P_SENDER "^(\\r?\\n?)\\s*([-A-Za-z0-9_]+)(?:\\s*\\(.+\\))?: " | 157 #define P_SENDER "^(\\r?\\n?)\\s*([-A-Za-z0-9_]+)(?:\\s*\\(.+\\))?: " |
152 #define P_COMMAND "^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+)(?:\\s*\\Z)" | 158 #define P_COMMAND "^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+)(?:\\s*\\Z)" |
153 #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" | 159 #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" |
154 #define P_USER "^.*?(?:<a .+?>)?([-A-Za-z0-9_]+)(?:</a>)?:" | 160 #define P_USER "^.*?(?:<a .+?>)?([-A-Za-z0-9_]+)(?:</a>)?:" |
155 #define P_CHANNEL "^(.*?(?:<a .+?>)?[-A-Za-z0-9_]+(?:</a>)?: \\r?\\n?#)([A-Za-z0-9_]+) " | 161 #define P_CHANNEL "^(.*?(?:<a .+?>)?[-A-Za-z0-9_]+(?:</a>)?: \\r?\\n?#)([A-Za-z0-9_]+) " |
162 #define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" | |
156 #define P_IMAGE_TWITTER "<a href=\"/account/profile_image/.+?\"><img .+? id=\"profile-image\".*src=\"(http://.+)\" .+?/>" | 163 #define P_IMAGE_TWITTER "<a href=\"/account/profile_image/.+?\"><img .+? id=\"profile-image\".*src=\"(http://.+)\" .+?/>" |
157 #define P_IMAGE_WASSR "<div class=\"image\"><a href=\".+\"><img src=\"(.+)\" width=\".+?\" /></a></div>" | 164 #define P_IMAGE_WASSR "<div class=\"image\"><a href=\".+\"><img src=\"(.+)\" width=\".+?\" /></a></div>" |
165 #define P_IMAGE_IDENTICA "<img src=\"(http://.+.identi.ca/.+)\" class=\"avatar profile\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-0_]+\"/>" | |
166 #define P_IMAGE_JISKO "<img src=\"(http://jisko.net/users/.+/img/avatar/thumb_side\\..+)\" alt=\"Avatar\" />" | |
158 #define P_SIZE_128_WASSR "\\.128\\." | 167 #define P_SIZE_128_WASSR "\\.128\\." |
159 #define P_IMAGE_IDENTICA "<img src=\"(http://.+.identi.ca/.+)\" class=\"avatar profile\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-0_]+\"/>" | |
160 #define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" | |
161 #define P_EXCESS_LF "([\\r|\\n]{3,})" | 168 #define P_EXCESS_LF "([\\r|\\n]{3,})" |
162 | 169 |
163 /* twitter API specific macros */ | 170 /* twitter API specific macros */ |
164 #define TWITTER_BASE_URL "http://twitter.com" | 171 #define TWITTER_BASE_URL "http://twitter.com" |
165 #define TWITTER_STATUS_GET "GET /statuses/friends_timeline.xml HTTP/1.1\r\n" \ | 172 #define TWITTER_STATUS_GET "GET /statuses/friends_timeline.xml HTTP/1.1\r\n" \ |
210 static gboolean is_twitter_conv(PurpleConversation *conv); | 217 static gboolean is_twitter_conv(PurpleConversation *conv); |
211 static gboolean is_wassr_account(PurpleAccount *account, const char *name); | 218 static gboolean is_wassr_account(PurpleAccount *account, const char *name); |
212 static gboolean is_wassr_conv(PurpleConversation *conv); | 219 static gboolean is_wassr_conv(PurpleConversation *conv); |
213 static gboolean is_identica_account(PurpleAccount *account, const char *name); | 220 static gboolean is_identica_account(PurpleAccount *account, const char *name); |
214 static gboolean is_identica_conv(PurpleConversation *conv); | 221 static gboolean is_identica_conv(PurpleConversation *conv); |
222 static gboolean is_jisko_account(PurpleAccount *account, const char *name); | |
223 static gboolean is_jisko_conv(PurpleConversation *conv); | |
215 static void conv_created_cb(PurpleConversation *conv, gpointer null); | 224 static void conv_created_cb(PurpleConversation *conv, gpointer null); |
216 static void deleting_conv_cb(PurpleConversation *conv); | 225 static void deleting_conv_cb(PurpleConversation *conv); |
217 static gboolean receiving_im_cb(PurpleAccount *account, char **sender, char **buffer, PurpleConversation *conv, PurpleMessageFlags *flags, void *data); | 226 static gboolean receiving_im_cb(PurpleAccount *account, char **sender, char **buffer, PurpleConversation *conv, PurpleMessageFlags *flags, void *data); |
218 static void insert_icon_at_mark(GtkTextMark *requested_mark, gpointer user_data); | 227 static void insert_icon_at_mark(GtkTextMark *requested_mark, gpointer user_data); |
219 static void insert_requested_icon(const gchar *user_name, gint service); | 228 static void insert_requested_icon(const gchar *user_name, gint service); |