SuperTweet interface driver classes.

Dependents:   SuperTweet_TestProgram StarBoardOrangeExpansion1 GSL_04-Network_Twitter

Revision:
0:d48d92e6c145
Child:
1:2d211e591fc8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SuperTweetV1XML.cpp	Tue Oct 12 22:20:38 2010 +0000
@@ -0,0 +1,86 @@
+/**
+ * SuperTweet API interface driver. (Version 0.0.1)
+ *
+ * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
+ * http://shinta.main.jp/
+ */
+
+#include "SuperTweetV1XML.h"
+
+SuperTweetV1XML::SuperTweetV1XML(const std::string account, const std::string password)
+        : SuperTweet(account, password) {
+}
+
+SuperTweetV1XML::~SuperTweetV1XML() {
+}
+
+HTTPResult SuperTweetV1XML::getStatusesUserTimeline(void (*func)(char *buf, size_t siz)) {
+    HTTPMap map;
+    HTTPStream stream;
+    const std::string url = URLBASE_V1 + "statuses/user_timeline.xml";
+    char buf[BUFSIZ + 1] = {0};
+
+    result = HTTP_OK;
+    completed = false;
+    stream.readNext((byte*)buf, sizeof(buf) - 1);
+    HTTPResult r = client.get(url.c_str(), &stream, this, &SuperTweetV1XML::callback);
+    while (!completed) {
+        Net::poll();
+        if (stream.readable()) {
+            buf[stream.readLen()] = 0;
+            func(buf, stream.readLen());
+            stream.readNext((byte*)buf, sizeof(buf) - 1);
+        }
+    }
+    return result;
+}
+
+HTTPResult SuperTweetV1XML::getStatusesHomeTimeline(void (*func)(char *buf, size_t siz)) {
+    HTTPMap map;
+    HTTPStream stream;
+    const std::string url = URLBASE_V1 + "statuses/home_timeline.xml";
+    char buf[BUFSIZ + 1] = {0};
+
+    result = HTTP_OK;
+    completed = false;
+    stream.readNext((byte*)buf, sizeof(buf) - 1);
+    HTTPResult r = client.get(url.c_str(), &stream, this, &SuperTweetV1XML::callback);
+    if (r != HTTP_OK) {
+    while (!completed) {
+        Net::poll();
+        if (stream.readable()) {
+            buf[stream.readLen()] = 0;
+            func(buf, stream.readLen());
+            stream.readNext((byte*)buf, sizeof(buf) - 1);
+        }
+    }
+    }
+    return result;
+}
+
+HTTPResult SuperTweetV1XML::postStatusesUpdate(const std::string datatext, void (*func)(char *buf, size_t siz)) {
+    HTTPMap map;
+    HTTPStream stream;
+    map["status"] = datatext;
+    const std::string url = URLBASE_V1 + "statuses/update.xml";
+    char buf[BUFSIZ + 1] = {0};
+
+    result = HTTP_OK;
+    completed = false;
+    stream.readNext((byte*)buf, sizeof(buf) - 1);
+    HTTPResult r = client.post(url.c_str(), map, &stream, this, &SuperTweetV1XML::callback);
+    while (!completed) {
+        Net::poll();
+        if (stream.readable()) {
+            buf[stream.readLen()] = 0;
+            func(buf, stream.readLen());
+            stream.readNext((byte*)buf, sizeof(buf) - 1);
+        }
+    }
+    return result;
+}
+
+void SuperTweetV1XML::callback(HTTPResult r) {
+    result = r;
+    completed = true;
+}