From ae2c0acb5058285c8af465ea7f926055bff6a27b Mon Sep 17 00:00:00 2001 From: Sarang Bharadwaj Date: Wed, 30 May 2012 23:44:41 +0530 Subject: [PATCH] Directed Message --- backends/twitter/TwitterResponseParser.cpp | 9 ++++--- backends/twitter/main.cpp | 28 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp index 04b0ba88..1f8690a3 100644 --- a/backends/twitter/TwitterResponseParser.cpp +++ b/backends/twitter/TwitterResponseParser.cpp @@ -1,10 +1,13 @@ #include "TwitterResponseParser.h" +#include "transport/logging.h" + +DEFINE_LOGGER(logger, "TwitterResponseParser") User getUser(const Swift::ParserElement::ref &element, const std::string xmlns) { User user; if(element->getName() != "user") { - std::cerr << "Not a user element!" << std::endl; + LOG4CXX_ERROR(logger, "Not a user element!") return user; } @@ -19,7 +22,7 @@ Status getStatus(const Swift::ParserElement::ref &element, const std::string xml { Status status; if(element->getName() != "status") { - std::cerr << "Not a status element!" << std::endl; + LOG4CXX_ERROR(logger, "Not a status element!") return status; } @@ -43,7 +46,7 @@ std::vector getTimeline(std::string &xml) Swift::ParserElement::ref rootElement = Swift::StringTreeParser::parse(xml); if(rootElement->getName() != "statuses") { - std::cerr << "XML doesnt correspond to timline\n"; + LOG4CXX_ERROR(logger, "XML doesnt correspond to timline") return statuses; } diff --git a/backends/twitter/main.cpp b/backends/twitter/main.cpp index 9f5c12a8..aa9a9d91 100644 --- a/backends/twitter/main.cpp +++ b/backends/twitter/main.cpp @@ -203,6 +203,30 @@ class TwitterPlugin : public NetworkPlugin { LOG4CXX_INFO(logger, "Sent PIN " << data << " and obtained access token"); } + if(cmd == "#help") { + std::string helpMsg = "\nHELP\n\ +status: - Update your status\n\ +#timeline - Retrieve your timeline\n\ +@: - Send a directed message to the user \n\ +#help - print this help message\n"; + + handleMessage(user, "twitter-account", helpMsg); + } + + if(cmd[0] == '@') { + std::string username = cmd.substr(1); + if(sessions[user]->directMessageSend(username, data, false) == false) { + LOG4CXX_ERROR(logger, "Error while sending directed message to user " << username ); + return; + } + + LOG4CXX_INFO(logger, "Sending " << data << " to " << username) + + std::string replyMsg; + sessions[user]->getLastWebResponse( replyMsg ); + LOG4CXX_INFO(logger, replyMsg); + } + if(cmd == "status") { if(connectionState[user] != CONNECTED) { LOG4CXX_ERROR(logger, "Trying to update status for " << user << " when not connected!"); @@ -238,9 +262,11 @@ class TwitterPlugin : public NetworkPlugin { LOG4CXX_INFO(logger, "twitCurl::timeline web response: " << replyMsg ); std::vector tweets = getTimeline(replyMsg); + std::string timeline = "\n"; for(int i=0 ; igetLastCurlError( replyMsg ); LOG4CXX_INFO(logger, "twitCurl::timeline error: " << replyMsg );