Mercurial > pidgin-twitter
comparison pidgin-twitter.h @ 300:42cdddf0f747
added preliminary support for friendfeed.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 25 May 2009 22:47:44 +0900 |
parents | d68ed289ef69 |
children | 1d3209e7e197 |
comparison
equal
deleted
inserted
replaced
299:d68ed289ef69 | 300:42cdddf0f747 |
---|---|
32 | 32 |
33 /* regp id */ | 33 /* regp id */ |
34 enum { | 34 enum { |
35 RECIPIENT = 0, | 35 RECIPIENT = 0, |
36 SENDER, | 36 SENDER, |
37 SENDER_FFEED, | |
37 COMMAND, | 38 COMMAND, |
38 PSEUDO, | 39 PSEUDO, |
39 USER, | 40 USER, |
40 CHANNEL_WASSR, | 41 CHANNEL_WASSR, |
41 TAG_TWITTER, | 42 TAG_TWITTER, |
43 GROUP_IDENTICA, | 44 GROUP_IDENTICA, |
44 IMAGE_TWITTER, | 45 IMAGE_TWITTER, |
45 IMAGE_WASSR, | 46 IMAGE_WASSR, |
46 IMAGE_IDENTICA, | 47 IMAGE_IDENTICA, |
47 IMAGE_JISKO, | 48 IMAGE_JISKO, |
49 IMAGE_FFEED, | |
48 SIZE_128_WASSR, | 50 SIZE_128_WASSR, |
49 EXCESS_LF | 51 EXCESS_LF, |
52 TRAIL_HASH | |
50 }; | 53 }; |
51 | 54 |
52 /* service id */ | 55 /* service id */ |
53 enum { | 56 enum { |
54 unknown_service = -1, | 57 unknown_service = -1, |
55 twitter_service, | 58 twitter_service, |
56 wassr_service, | 59 wassr_service, |
57 identica_service, | 60 identica_service, |
58 jisko_service | 61 jisko_service, |
62 ffeed_service | |
59 }; | 63 }; |
60 | 64 |
61 /* container to hold icon data */ | 65 /* container to hold icon data */ |
62 typedef struct _icon_data { | 66 typedef struct _icon_data { |
63 GdkPixbuf *pixbuf; /* icon pixmap */ | 67 GdkPixbuf *pixbuf; /* icon pixmap */ |
126 #define OPT_API_BASE_POST OPT_PIDGINTWITTER "/api_base_post" | 130 #define OPT_API_BASE_POST OPT_PIDGINTWITTER "/api_base_post" |
127 #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" | 131 #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" |
128 #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" | 132 #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" |
129 #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" | 133 #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" |
130 #define OPT_SCREEN_NAME_JISKO OPT_PIDGINTWITTER "/screen_name_jisko" | 134 #define OPT_SCREEN_NAME_JISKO OPT_PIDGINTWITTER "/screen_name_jisko" |
135 #define OPT_SCREEN_NAME_FFEED OPT_PIDGINTWITTER "/screen_name_ffeed" | |
131 #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" | 136 #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" |
132 #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" | 137 #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" |
133 #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" | 138 #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" |
134 #define OPT_UPDATE_ICON OPT_PIDGINTWITTER "/update_icon" | 139 #define OPT_UPDATE_ICON OPT_PIDGINTWITTER "/update_icon" |
135 #define OPT_ICON_MAX_COUNT OPT_PIDGINTWITTER "/icon_max_count" | 140 #define OPT_ICON_MAX_COUNT OPT_PIDGINTWITTER "/icon_max_count" |
140 #define OPT_FILTER_EXCLUDE_REPLY OPT_PIDGINTWITTER "/filter_exclude_reply" | 145 #define OPT_FILTER_EXCLUDE_REPLY OPT_PIDGINTWITTER "/filter_exclude_reply" |
141 #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" | 146 #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" |
142 #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" | 147 #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" |
143 #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" | 148 #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" |
144 #define OPT_FILTER_JISKO OPT_PIDGINTWITTER "/filter_jisko" | 149 #define OPT_FILTER_JISKO OPT_PIDGINTWITTER "/filter_jisko" |
150 #define OPT_FILTER_FFEED OPT_PIDGINTWITTER "/filter_ffeed" | |
145 #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" | 151 #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" |
146 #define OPT_RETRIEVE_COUNT OPT_PIDGINTWITTER "/retrieve_count" | 152 #define OPT_RETRIEVE_COUNT OPT_PIDGINTWITTER "/retrieve_count" |
147 | 153 |
148 #ifdef _WIN32 | 154 #ifdef _WIN32 |
149 #define OPT_PIDGIN_BLINK_IM PIDGIN_PREFS_ROOT "/win32/blink_im" | 155 #define OPT_PIDGIN_BLINK_IM PIDGIN_PREFS_ROOT "/win32/blink_im" |
156 #define SENDER_FORMAT_WASSR "%s<a href='http://wassr.jp/user/%s'>%s</a>: " | 162 #define SENDER_FORMAT_WASSR "%s<a href='http://wassr.jp/user/%s'>%s</a>: " |
157 #define RECIPIENT_FORMAT_IDENTICA "%s@<a href='http://identi.ca/%s'>%s</a>" | 163 #define RECIPIENT_FORMAT_IDENTICA "%s@<a href='http://identi.ca/%s'>%s</a>" |
158 #define SENDER_FORMAT_IDENTICA "%s<a href='http://identi.ca/%s'>%s</a>: " | 164 #define SENDER_FORMAT_IDENTICA "%s<a href='http://identi.ca/%s'>%s</a>: " |
159 #define RECIPIENT_FORMAT_JISKO "%s@<a href='http://jisko.net/%s'>%s</a>" | 165 #define RECIPIENT_FORMAT_JISKO "%s@<a href='http://jisko.net/%s'>%s</a>" |
160 #define SENDER_FORMAT_JISKO "%s<a href='http://jisko.net/%s'>%s</a>: " | 166 #define SENDER_FORMAT_JISKO "%s<a href='http://jisko.net/%s'>%s</a>: " |
167 #define RECIPIENT_FORMAT_FFEED "%s@<a href='http://friendfeed.com/%s'>%s</a>" | |
168 #define SENDER_FORMAT_FFEED "%s<a href='http://friendfeed.com/%s'>%s</a>: " | |
161 #define CHANNEL_FORMAT_WASSR "%s<a href='http://wassr.jp/channel/%s'>%s</a> " | 169 #define CHANNEL_FORMAT_WASSR "%s<a href='http://wassr.jp/channel/%s'>%s</a> " |
162 #define CHANNEL_FORMAT_IDENTICA "%s<a href='http://identi.ca/tag/%s'>%s</a> " | 170 #define CHANNEL_FORMAT_IDENTICA "%s<a href='http://identi.ca/tag/%s'>%s</a> " |
163 #define TAG_FORMAT_TWITTER "%s<a href='http://twitter.com/search?q=%%23%s'>#%s</a>" | 171 #define TAG_FORMAT_TWITTER "%s<a href='http://twitter.com/search?q=%%23%s'>#%s</a>" |
164 #define TAG_FORMAT_IDENTICA "#<a href='http://identi.ca/tag/%s'>%s</a>" | 172 #define TAG_FORMAT_IDENTICA "#<a href='http://identi.ca/tag/%s'>%s</a>" |
165 #define GROUP_FORMAT_IDENTICA "!<a href='http://identi.ca/group/%s'>%s</a>" | 173 #define GROUP_FORMAT_IDENTICA "!<a href='http://identi.ca/group/%s'>%s</a>" |
169 #define EMPTY "" | 177 #define EMPTY "" |
170 | 178 |
171 /* patterns */ | 179 /* patterns */ |
172 #define P_RECIPIENT "(^|\\s+|[.[:^print:]])@([-A-Za-z0-9_]+)" | 180 #define P_RECIPIENT "(^|\\s+|[.[:^print:]])@([-A-Za-z0-9_]+)" |
173 #define P_SENDER "^(\\r?\\n?)\\s*([-A-Za-z0-9_]+)(?:\\s*\\(.+\\))?: " | 181 #define P_SENDER "^(\\r?\\n?)\\s*([-A-Za-z0-9_]+)(?:\\s*\\(.+\\))?: " |
182 #define P_SENDER_FFEED "^(\\r?\\n?)\\s*@[0-9]\\s*([-A-Za-z0-9_]+)\\s*(?:posted)" | |
174 #define P_COMMAND "^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+)(?:\\s*\\Z)" | 183 #define P_COMMAND "^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+)(?:\\s*\\Z)" |
175 #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" | 184 #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" |
176 #define P_USER "^.*?(?:<a .+?>)?([-A-Za-z0-9_]+)(?:</a>)?:" | 185 #define P_USER "^.*?(?:<a .+?>)?([-A-Za-z0-9_]+)(?:</a>)?:" |
177 #define P_CHANNEL "^(.*?(?:<a .+?>)?[-A-Za-z0-9_]+(?:</a>)?: \\r?\\n?#)([A-Za-z0-9_]+) " | 186 #define P_CHANNEL "^(.*?(?:<a .+?>)?[-A-Za-z0-9_]+(?:</a>)?: \\r?\\n?#)([A-Za-z0-9_]+) " |
178 #define P_TAG_TWITTER "(^|\\s+)#([-A-Za-z0-9_]+)" | 187 #define P_TAG_TWITTER "(^|\\s+)#([-A-Za-z0-9_]+)" |
180 #define P_GROUP_IDENTICA "!([-A-Za-z0-9_]+)" | 189 #define P_GROUP_IDENTICA "!([-A-Za-z0-9_]+)" |
181 #define P_IMAGE_TWITTER "<img .*=\"profile-(?:image|img)\".*src=\"(https?://.+?)\".*/>" | 190 #define P_IMAGE_TWITTER "<img .*=\"profile-(?:image|img)\".*src=\"(https?://.+?)\".*/>" |
182 #define P_IMAGE_WASSR "<div class=\"image\"><a href=\".+\"><img src=\"(.+)\" width=\".+?\" /></a></div>" | 191 #define P_IMAGE_WASSR "<div class=\"image\"><a href=\".+\"><img src=\"(.+)\" width=\".+?\" /></a></div>" |
183 #define P_IMAGE_IDENTICA "<img src=\"(https?://.+.identi.ca/.+)\" class=\"avatar profile photo\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-9_]+\"/>" | 192 #define P_IMAGE_IDENTICA "<img src=\"(https?://.+.identi.ca/.+)\" class=\"avatar profile photo\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-9_]+\"/>" |
184 #define P_IMAGE_JISKO "<img src=\"(https?://jisko.net/users/.+/img/avatar/thumb_side\\..+)\" alt=\"Avatar\" />" | 193 #define P_IMAGE_JISKO "<img src=\"(https?://jisko.net/users/.+/img/avatar/thumb_side\\..+)\" alt=\"Avatar\" />" |
194 #define P_IMAGE_FFEED "<img src=\"(https?://i.friendfeed.com/.+)\" alt=\"" | |
185 #define P_SIZE_128_WASSR "\\.128\\." | 195 #define P_SIZE_128_WASSR "\\.128\\." |
186 #define P_EXCESS_LF "([\\r|\\n]{2,})" | 196 #define P_EXCESS_LF "([\\r|\\n]{2,})" |
197 #define P_TRAIL_HASH "( #\\s+$)" | |
187 | 198 |
188 /* twitter API specific macros */ | 199 /* twitter API specific macros */ |
189 #define TWITTER_BASE_URL "http://twitter.com" | 200 #define TWITTER_BASE_URL "http://twitter.com" |
190 #define TWITTER_STATUS_GET "GET /statuses/friends_timeline.xml?count=%d HTTP/1.1\r\n" \ | 201 #define TWITTER_STATUS_GET "GET /statuses/friends_timeline.xml?count=%d HTTP/1.1\r\n" \ |
191 "Host: twitter.com\r\n" \ | 202 "Host: twitter.com\r\n" \ |
209 #define IDENTICA_DEFAULT_ICON_URL "http://theme.identi.ca/identica/default-avatar-profile.png" | 220 #define IDENTICA_DEFAULT_ICON_URL "http://theme.identi.ca/identica/default-avatar-profile.png" |
210 | 221 |
211 /* jisko specific macro */ | 222 /* jisko specific macro */ |
212 #define JISKO_DEFAULT_ICON_URL "http://jisko.net/static/img/avatar/default_note.png" | 223 #define JISKO_DEFAULT_ICON_URL "http://jisko.net/static/img/avatar/default_note.png" |
213 | 224 |
225 /* ffeed specific macro */ | |
226 #define FFEED_DEFAULT_ICON_URL "http://friendfeed.com/static/images/nomugshot-large.png" | |
227 | |
214 /* size of substitution buffer */ | 228 /* size of substitution buffer */ |
215 #define SUBST_BUF_SIZE (32 * 1024) | 229 #define SUBST_BUF_SIZE (32 * 1024) |
216 | 230 |
217 /* misc macros */ | 231 /* misc macros */ |
218 #define DEFAULT_ICON_SIZE (48) | 232 #define DEFAULT_ICON_SIZE (48) |
219 #define DEFAULT_ICON_MAX_COUNT (50) | 233 #define DEFAULT_ICON_MAX_COUNT (50) |
220 #define DEFAULT_ICON_MAX_DAYS (7) | 234 #define DEFAULT_ICON_MAX_DAYS (7) |
221 #define DAYS_TO_SECONDS(d) ((d) * 86400) | 235 #define DAYS_TO_SECONDS(d) ((d) * 86400) |
222 #define NUM_REGPS (15) | 236 #define NUM_REGPS (18) |
223 #define NUM_SERVICES (4) /* twitter, wassr, identica, jisko. */ | 237 #define NUM_SERVICES (5) /* twitter, wassr, identica, jisko, ffeed. */ |
224 | 238 |
225 /* debug macros */ | 239 /* debug macros */ |
226 #define twitter_debug(fmt, ...) do { if(purple_prefs_get_bool(OPT_LOG_OUTPUT)) purple_debug(PURPLE_DEBUG_INFO, PLUGIN_NAME, "%s: %s():%4d: " fmt, __FILE__, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); } while(0); | 240 #define twitter_debug(fmt, ...) do { if(purple_prefs_get_bool(OPT_LOG_OUTPUT)) purple_debug(PURPLE_DEBUG_INFO, PLUGIN_NAME, "%s: %s():%4d: " fmt, __FILE__, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); } while(0); |
227 #define twitter_error(fmt, ...) do { if(purple_prefs_get_bool(OPT_LOG_OUTPUT)) purple_debug(PURPLE_DEBUG_ERROR, PLUGIN_NAME, "%s: %s():%4d: " fmt, __FILE__, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); } while(0); | 241 #define twitter_error(fmt, ...) do { if(purple_prefs_get_bool(OPT_LOG_OUTPUT)) purple_debug(PURPLE_DEBUG_ERROR, PLUGIN_NAME, "%s: %s():%4d: " fmt, __FILE__, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); } while(0); |
228 | 242 |