SuperTweet interface driver classes.
Dependents: SuperTweet_TestProgram StarBoardOrangeExpansion1 GSL_04-Network_Twitter
Diff: SuperTweetV1XML.cpp
- Revision:
- 0:d48d92e6c145
- Child:
- 1:2d211e591fc8
diff -r 000000000000 -r d48d92e6c145 SuperTweetV1XML.cpp --- /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; +}