From da9ff8e9d6c03167e4fbdb000aa7a421e46667ab Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 20 Aug 2016 14:07:45 -0400 Subject: Updated libtwitter++ (API changes) --- ebooks.cpp | 48 ++++++++++++++++-------------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) (limited to 'ebooks.cpp') diff --git a/ebooks.cpp b/ebooks.cpp index dd9c7bd..fd9ca83 100644 --- a/ebooks.cpp +++ b/ebooks.cpp @@ -75,20 +75,10 @@ int main(int argc, char** args) return form; }); - std::mutex stats_mutex; - - twitter::user me; - auto resp = client.getUser(me); - if (resp != twitter::response::ok) - { - std::cout << "Could not get current Twitter user" << std::endl; - return -1; - } - - client.setUserStreamNotifyCallback([&] (twitter::notification n) { + twitter::stream user_stream(client, [&kgramstats] (const twitter::notification& n) { if (n.getType() == twitter::notification::type::tweet) { - if ((!n.getTweet().isRetweet()) && (n.getTweet().getAuthor() != me)) + if ((!n.getTweet().isRetweet()) && (n.getTweet().isMyTweet())) { std::string original = n.getTweet().getText(); std::string canonical; @@ -98,42 +88,36 @@ int main(int argc, char** args) if (canonical.find("@rawr_ebooks") != std::string::npos) { - std::string doc = client.generateReplyPrefill(n.getTweet()); + std::string doc = n.getTweet().generateReplyPrefill(); + doc += kgramstats.randomSentence(140 - doc.length()); + doc.resize(140); + + try { - std::lock_guard stats_lock(stats_mutex); - doc += kgramstats.randomSentence(140 - doc.length()); - doc.resize(140); - } - - twitter::tweet tw; - twitter::response resp = client.updateStatus(doc, tw, n.getTweet()); - if (resp != twitter::response::ok) + n.getTweet().reply(doc); + } catch (const twitter::twitter_error& error) { - std::cout << "Twitter error while tweeting: " << resp << std::endl; + std::cout << "Twitter error while tweeting: " << error.what() << std::endl; } } } } }); - client.startUserStream(); std::this_thread::sleep_for(std::chrono::minutes(1)); std::cout << "Generating..." << std::endl; for (;;) { - std::string doc; - { - std::lock_guard stats_lock(stats_mutex); - doc = kgramstats.randomSentence(140); - } + std::string doc = kgramstats.randomSentence(140); doc.resize(140); - twitter::tweet tw; - resp = client.updateStatus(doc, tw); - if (resp != twitter::response::ok) + try + { + client.updateStatus(doc); + } catch (const twitter::twitter_error& error) { - std::cout << "Twitter error while tweeting: " << resp << std::endl; + std::cout << "Twitter error while tweeting: " << error.what() << std::endl; } int waitlen = rand() % delay; -- cgit 1.4.1