Mercurial > pidgin-twitter
diff twitter_api.c @ 345:2e37e715e4a6
add preliminary support for quotetweet and official retweet.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sat, 12 Dec 2009 00:18:27 +0900 |
parents | 34ecd09ce4f8 |
children | 33d2551727ba |
line wrap: on
line diff
--- a/twitter_api.c Mon Oct 19 00:48:25 2009 +0900 +++ b/twitter_api.c Sat Dec 12 00:18:27 2009 +0900 @@ -332,7 +332,7 @@ request = g_strconcat(header, "\r\n", NULL); /* invoke fetch */ - purple_util_fetch_url_request(TWITTER_BASE_URL, FALSE, + purple_util_fetch_url_request(TWITTER_API_BASE_URL, FALSE, NULL, TRUE, request, TRUE, get_status_with_api_cb, data); @@ -598,6 +598,55 @@ g_free(request); } +static void +retweet_with_api_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, + const gchar *url_text, size_t len, + const gchar *error_message) +{ + /* dummy */ +} + +void +retweet_with_api(guint64 id) +{ + char *header, *request; + char *basic_auth, *basic_auth_encoded; + + const char *screen_name = + purple_prefs_get_string(OPT_SCREEN_NAME_TWITTER); + const char *password = purple_prefs_get_string(OPT_PASSWORD_TWITTER); + + if(id == 0) { + twitter_debug("invalid message id\n"); + return; + } + + if (!screen_name || !password || !screen_name[0] || !password[0]) { + twitter_debug("screen_name or password is empty\n"); + return; + } + + basic_auth = g_strdup_printf("%s:%s", screen_name, password); + basic_auth_encoded = purple_base64_encode((unsigned char *)basic_auth, + strlen(basic_auth)); + g_free(basic_auth); + + + header = g_strdup_printf(TWITTER_RETWEET_POST, + (long long unsigned int)id, + basic_auth_encoded); + request = g_strconcat(header, "\r\n", NULL); + + purple_util_fetch_url_request(TWITTER_API_BASE_URL, FALSE, + NULL, TRUE, request, TRUE, + retweet_with_api_cb, NULL); + twitter_debug("request = %s\n", request); + + g_free(header); + g_free(basic_auth_encoded); + g_free(request); +} + void signed_on_cb(PurpleConnection *gc) {