SuperTweet interface driver classes.
Dependents: SuperTweet_TestProgram StarBoardOrangeExpansion1 GSL_04-Network_Twitter
SuperTweetV1XML.cpp@2:d463d3fc4f81, 2010-10-29 (annotated)
- Committer:
- shintamainjp
- Date:
- Fri Oct 29 23:04:12 2010 +0000
- Revision:
- 2:d463d3fc4f81
- Parent:
- 1:2d211e591fc8
Modified default value of a callback function to NULL.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:d48d92e6c145 | 1 | /** |
shintamainjp | 0:d48d92e6c145 | 2 | * SuperTweet API interface driver. (Version 0.0.1) |
shintamainjp | 0:d48d92e6c145 | 3 | * |
shintamainjp | 0:d48d92e6c145 | 4 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:d48d92e6c145 | 5 | * http://shinta.main.jp/ |
shintamainjp | 0:d48d92e6c145 | 6 | */ |
shintamainjp | 0:d48d92e6c145 | 7 | |
shintamainjp | 0:d48d92e6c145 | 8 | #include "SuperTweetV1XML.h" |
shintamainjp | 0:d48d92e6c145 | 9 | |
shintamainjp | 1:2d211e591fc8 | 10 | /** |
shintamainjp | 1:2d211e591fc8 | 11 | * Create. |
shintamainjp | 1:2d211e591fc8 | 12 | * |
shintamainjp | 1:2d211e591fc8 | 13 | * @param account Account name. |
shintamainjp | 1:2d211e591fc8 | 14 | * @param password Password. |
shintamainjp | 1:2d211e591fc8 | 15 | */ |
shintamainjp | 0:d48d92e6c145 | 16 | SuperTweetV1XML::SuperTweetV1XML(const std::string account, const std::string password) |
shintamainjp | 0:d48d92e6c145 | 17 | : SuperTweet(account, password) { |
shintamainjp | 0:d48d92e6c145 | 18 | } |
shintamainjp | 0:d48d92e6c145 | 19 | |
shintamainjp | 1:2d211e591fc8 | 20 | /** |
shintamainjp | 1:2d211e591fc8 | 21 | * Dispose. |
shintamainjp | 1:2d211e591fc8 | 22 | */ |
shintamainjp | 0:d48d92e6c145 | 23 | SuperTweetV1XML::~SuperTweetV1XML() { |
shintamainjp | 0:d48d92e6c145 | 24 | } |
shintamainjp | 0:d48d92e6c145 | 25 | |
shintamainjp | 1:2d211e591fc8 | 26 | /** |
shintamainjp | 1:2d211e591fc8 | 27 | * Returns the 20 most recent statuses posted by the authenticating user. |
shintamainjp | 1:2d211e591fc8 | 28 | * |
shintamainjp | 1:2d211e591fc8 | 29 | * @param func A pointer to a callback function. |
shintamainjp | 1:2d211e591fc8 | 30 | * @return Result code. |
shintamainjp | 1:2d211e591fc8 | 31 | */ |
shintamainjp | 0:d48d92e6c145 | 32 | HTTPResult SuperTweetV1XML::getStatusesUserTimeline(void (*func)(char *buf, size_t siz)) { |
shintamainjp | 0:d48d92e6c145 | 33 | HTTPMap map; |
shintamainjp | 0:d48d92e6c145 | 34 | HTTPStream stream; |
shintamainjp | 0:d48d92e6c145 | 35 | const std::string url = URLBASE_V1 + "statuses/user_timeline.xml"; |
shintamainjp | 0:d48d92e6c145 | 36 | char buf[BUFSIZ + 1] = {0}; |
shintamainjp | 0:d48d92e6c145 | 37 | |
shintamainjp | 0:d48d92e6c145 | 38 | result = HTTP_OK; |
shintamainjp | 0:d48d92e6c145 | 39 | completed = false; |
shintamainjp | 0:d48d92e6c145 | 40 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 0:d48d92e6c145 | 41 | HTTPResult r = client.get(url.c_str(), &stream, this, &SuperTweetV1XML::callback); |
shintamainjp | 0:d48d92e6c145 | 42 | while (!completed) { |
shintamainjp | 0:d48d92e6c145 | 43 | Net::poll(); |
shintamainjp | 0:d48d92e6c145 | 44 | if (stream.readable()) { |
shintamainjp | 0:d48d92e6c145 | 45 | buf[stream.readLen()] = 0; |
shintamainjp | 2:d463d3fc4f81 | 46 | if (func != NULL) { |
shintamainjp | 2:d463d3fc4f81 | 47 | func(buf, stream.readLen()); |
shintamainjp | 2:d463d3fc4f81 | 48 | } |
shintamainjp | 0:d48d92e6c145 | 49 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 0:d48d92e6c145 | 50 | } |
shintamainjp | 0:d48d92e6c145 | 51 | } |
shintamainjp | 0:d48d92e6c145 | 52 | return result; |
shintamainjp | 0:d48d92e6c145 | 53 | } |
shintamainjp | 0:d48d92e6c145 | 54 | |
shintamainjp | 1:2d211e591fc8 | 55 | /** |
shintamainjp | 1:2d211e591fc8 | 56 | * Returns the 20 most recent statuses, including retweets if they exist, posted by the authenticating user and the user's they follow. |
shintamainjp | 1:2d211e591fc8 | 57 | * |
shintamainjp | 1:2d211e591fc8 | 58 | * @param func A pointer to a callback function. |
shintamainjp | 1:2d211e591fc8 | 59 | * @return Result code. |
shintamainjp | 1:2d211e591fc8 | 60 | */ |
shintamainjp | 0:d48d92e6c145 | 61 | HTTPResult SuperTweetV1XML::getStatusesHomeTimeline(void (*func)(char *buf, size_t siz)) { |
shintamainjp | 0:d48d92e6c145 | 62 | HTTPMap map; |
shintamainjp | 0:d48d92e6c145 | 63 | HTTPStream stream; |
shintamainjp | 0:d48d92e6c145 | 64 | const std::string url = URLBASE_V1 + "statuses/home_timeline.xml"; |
shintamainjp | 0:d48d92e6c145 | 65 | char buf[BUFSIZ + 1] = {0}; |
shintamainjp | 0:d48d92e6c145 | 66 | |
shintamainjp | 0:d48d92e6c145 | 67 | result = HTTP_OK; |
shintamainjp | 0:d48d92e6c145 | 68 | completed = false; |
shintamainjp | 0:d48d92e6c145 | 69 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 0:d48d92e6c145 | 70 | HTTPResult r = client.get(url.c_str(), &stream, this, &SuperTweetV1XML::callback); |
shintamainjp | 0:d48d92e6c145 | 71 | if (r != HTTP_OK) { |
shintamainjp | 1:2d211e591fc8 | 72 | while (!completed) { |
shintamainjp | 1:2d211e591fc8 | 73 | Net::poll(); |
shintamainjp | 1:2d211e591fc8 | 74 | if (stream.readable()) { |
shintamainjp | 1:2d211e591fc8 | 75 | buf[stream.readLen()] = 0; |
shintamainjp | 2:d463d3fc4f81 | 76 | if (func != NULL) { |
shintamainjp | 2:d463d3fc4f81 | 77 | func(buf, stream.readLen()); |
shintamainjp | 2:d463d3fc4f81 | 78 | } |
shintamainjp | 1:2d211e591fc8 | 79 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 1:2d211e591fc8 | 80 | } |
shintamainjp | 0:d48d92e6c145 | 81 | } |
shintamainjp | 0:d48d92e6c145 | 82 | } |
shintamainjp | 0:d48d92e6c145 | 83 | return result; |
shintamainjp | 0:d48d92e6c145 | 84 | } |
shintamainjp | 0:d48d92e6c145 | 85 | |
shintamainjp | 1:2d211e591fc8 | 86 | /** |
shintamainjp | 1:2d211e591fc8 | 87 | * Updates the authenticating user's status. |
shintamainjp | 1:2d211e591fc8 | 88 | * A status update with text identical to the authenticating user's text identical |
shintamainjp | 1:2d211e591fc8 | 89 | * to the authenticating user's current status will be ignored to prevent duplicates. |
shintamainjp | 1:2d211e591fc8 | 90 | * |
shintamainjp | 1:2d211e591fc8 | 91 | * @param func A pointer to a callback function. |
shintamainjp | 1:2d211e591fc8 | 92 | * @return Result code. |
shintamainjp | 1:2d211e591fc8 | 93 | */ |
shintamainjp | 0:d48d92e6c145 | 94 | HTTPResult SuperTweetV1XML::postStatusesUpdate(const std::string datatext, void (*func)(char *buf, size_t siz)) { |
shintamainjp | 0:d48d92e6c145 | 95 | HTTPMap map; |
shintamainjp | 0:d48d92e6c145 | 96 | HTTPStream stream; |
shintamainjp | 0:d48d92e6c145 | 97 | map["status"] = datatext; |
shintamainjp | 0:d48d92e6c145 | 98 | const std::string url = URLBASE_V1 + "statuses/update.xml"; |
shintamainjp | 0:d48d92e6c145 | 99 | char buf[BUFSIZ + 1] = {0}; |
shintamainjp | 0:d48d92e6c145 | 100 | |
shintamainjp | 0:d48d92e6c145 | 101 | result = HTTP_OK; |
shintamainjp | 0:d48d92e6c145 | 102 | completed = false; |
shintamainjp | 0:d48d92e6c145 | 103 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 0:d48d92e6c145 | 104 | HTTPResult r = client.post(url.c_str(), map, &stream, this, &SuperTweetV1XML::callback); |
shintamainjp | 0:d48d92e6c145 | 105 | while (!completed) { |
shintamainjp | 0:d48d92e6c145 | 106 | Net::poll(); |
shintamainjp | 0:d48d92e6c145 | 107 | if (stream.readable()) { |
shintamainjp | 0:d48d92e6c145 | 108 | buf[stream.readLen()] = 0; |
shintamainjp | 2:d463d3fc4f81 | 109 | if (func != NULL) { |
shintamainjp | 2:d463d3fc4f81 | 110 | func(buf, stream.readLen()); |
shintamainjp | 2:d463d3fc4f81 | 111 | } |
shintamainjp | 0:d48d92e6c145 | 112 | stream.readNext((byte*)buf, sizeof(buf) - 1); |
shintamainjp | 0:d48d92e6c145 | 113 | } |
shintamainjp | 0:d48d92e6c145 | 114 | } |
shintamainjp | 0:d48d92e6c145 | 115 | return result; |
shintamainjp | 0:d48d92e6c145 | 116 | } |
shintamainjp | 0:d48d92e6c145 | 117 | |
shintamainjp | 0:d48d92e6c145 | 118 | void SuperTweetV1XML::callback(HTTPResult r) { |
shintamainjp | 0:d48d92e6c145 | 119 | result = r; |
shintamainjp | 0:d48d92e6c145 | 120 | completed = true; |
shintamainjp | 0:d48d92e6c145 | 121 | } |