SuperTweet interface driver classes.
Dependents: SuperTweet_TestProgram StarBoardOrangeExpansion1 GSL_04-Network_Twitter
SuperTweetV1XML.cpp
- Committer:
- shintamainjp
- Date:
- 2010-10-12
- Revision:
- 0:d48d92e6c145
- Child:
- 1:2d211e591fc8
File content as of revision 0:d48d92e6c145:
/** * 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; }