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)
 {