diff --git a/backends/twitter/Requests/CreateFriendRequest.cpp b/backends/twitter/Requests/CreateFriendRequest.cpp index eae88fe7..305a8868 100644 --- a/backends/twitter/Requests/CreateFriendRequest.cpp +++ b/backends/twitter/Requests/CreateFriendRequest.cpp @@ -32,16 +32,17 @@ void CreateFriendRequest::run() void CreateFriendRequest::finalize() { + Error error; if(!success) { - std::string error; - twitObj->getLastCurlError(error); - LOG4CXX_ERROR(logger, user << " - Curl error: " << error) + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " - Curl error: " << curlerror) callBack(user, friendInfo, profileImg, error); } else { - std::string error; error = getErrorMessage(replyMsg); - if(error.length()) { - LOG4CXX_ERROR(logger, user << " - " << error) + if(error.getMessage().length()) { + LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) } else LOG4CXX_INFO(logger, user << ": Now following " << frnd) callBack(user, friendInfo, profileImg, error); diff --git a/backends/twitter/Requests/CreateFriendRequest.h b/backends/twitter/Requests/CreateFriendRequest.h index bc8cc583..60d8cec0 100644 --- a/backends/twitter/Requests/CreateFriendRequest.h +++ b/backends/twitter/Requests/CreateFriendRequest.h @@ -18,14 +18,14 @@ class CreateFriendRequest : public Thread std::string user; std::string frnd; std::string replyMsg; - boost::function< void (std::string&, User&, std::string &, std::string&) > callBack; + boost::function< void (std::string&, User&, std::string &, Error&) > callBack; User friendInfo; std::string profileImg; bool success; public: CreateFriendRequest(twitCurl *obj, const std::string &_user, const std::string & _frnd, - boost::function< void (std::string&, User&, std::string &, std::string&) > cb) { + boost::function< void (std::string&, User&, std::string &, Error&) > cb) { twitObj = obj->clone(); user = _user; frnd = _frnd; diff --git a/backends/twitter/Requests/DestroyFriendRequest.cpp b/backends/twitter/Requests/DestroyFriendRequest.cpp index 5468cace..6fb8a7f4 100644 --- a/backends/twitter/Requests/DestroyFriendRequest.cpp +++ b/backends/twitter/Requests/DestroyFriendRequest.cpp @@ -18,15 +18,16 @@ void DestroyFriendRequest::run() void DestroyFriendRequest::finalize() { + Error error; if(!success) { - std::string error; - twitObj->getLastCurlError(error); - LOG4CXX_ERROR(logger, user << " Curl error: " << error) + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " Curl error: " << curlerror) callBack(user, friendInfo, error); } else { - std::string error; error = getErrorMessage(replyMsg); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) callBack(user, friendInfo, error); } } diff --git a/backends/twitter/Requests/DestroyFriendRequest.h b/backends/twitter/Requests/DestroyFriendRequest.h index 031e4958..0f6ed0d8 100644 --- a/backends/twitter/Requests/DestroyFriendRequest.h +++ b/backends/twitter/Requests/DestroyFriendRequest.h @@ -18,13 +18,13 @@ class DestroyFriendRequest : public Thread std::string user; std::string frnd; std::string replyMsg; - boost::function< void (std::string&, User&, std::string&) > callBack; + boost::function< void (std::string&, User&, Error&) > callBack; User friendInfo; bool success; public: DestroyFriendRequest(twitCurl *obj, const std::string &_user, const std::string & _frnd, - boost::function< void (std::string&, User&, std::string&) > cb) { + boost::function< void (std::string&, User&, Error&) > cb) { twitObj = obj->clone(); user = _user; frnd = _frnd; diff --git a/backends/twitter/Requests/DirectMessageRequest.cpp b/backends/twitter/Requests/DirectMessageRequest.cpp index 5798f06a..64dcd050 100644 --- a/backends/twitter/Requests/DirectMessageRequest.cpp +++ b/backends/twitter/Requests/DirectMessageRequest.cpp @@ -16,13 +16,16 @@ void DirectMessageRequest::run() void DirectMessageRequest::finalize() { + Error error; if(!success) { - twitObj->getLastCurlError( replyMsg ); - LOG4CXX_ERROR(logger, user << " Curl error: " << replyMsg); - callBack(user, username, messages, replyMsg); + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " Curl error: " << curlerror); + callBack(user, username, messages, error); } else { - std::string error = getErrorMessage(replyMsg); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + error = getErrorMessage(replyMsg); + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) else LOG4CXX_INFO(logger, user << " - " << replyMsg) callBack(user, username, messages, error); } diff --git a/backends/twitter/Requests/DirectMessageRequest.h b/backends/twitter/Requests/DirectMessageRequest.h index 19357759..754c24c8 100644 --- a/backends/twitter/Requests/DirectMessageRequest.h +++ b/backends/twitter/Requests/DirectMessageRequest.h @@ -18,13 +18,13 @@ class DirectMessageRequest : public Thread std::string user; std::string username; std::string replyMsg; - boost::function< void (std::string&, std::string &, std::vector&, std::string&) > callBack; + boost::function< void (std::string&, std::string &, std::vector&, Error&) > callBack; std::vector messages; bool success; public: DirectMessageRequest(twitCurl *obj, const std::string &_user, const std::string & _username, const std::string &_data, - boost::function< void (std::string&, std::string &, std::vector&, std::string&) > cb) { + boost::function< void (std::string&, std::string &, std::vector&, Error&) > cb) { twitObj = obj->clone(); data = _data; user = _user; diff --git a/backends/twitter/Requests/FetchFriends.cpp b/backends/twitter/Requests/FetchFriends.cpp index 92df6215..8781902d 100644 --- a/backends/twitter/Requests/FetchFriends.cpp +++ b/backends/twitter/Requests/FetchFriends.cpp @@ -35,13 +35,16 @@ void FetchFriends::run() void FetchFriends::finalize() { + Error error; if(!success) { - twitObj->getLastCurlError( replyMsg ); - LOG4CXX_ERROR(logger, user << " - " << replyMsg) - callBack(user, friends, friendAvatars, replyMsg); + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " - " << curlerror) + callBack(user, friends, friendAvatars, error); } else { - std::string error = getErrorMessage(replyMsg); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + error = getErrorMessage(replyMsg); + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) callBack(user, friends, friendAvatars, error); } } diff --git a/backends/twitter/Requests/FetchFriends.h b/backends/twitter/Requests/FetchFriends.h index 7acc2819..5f44a47b 100644 --- a/backends/twitter/Requests/FetchFriends.h +++ b/backends/twitter/Requests/FetchFriends.h @@ -21,11 +21,11 @@ class FetchFriends : public Thread std::vector friends; std::vector friendAvatars; bool success; - boost::function< void (std::string, std::vector &, std::vector &, std::string) > callBack; + boost::function< void (std::string, std::vector &, std::vector &, Error) > callBack; public: FetchFriends(twitCurl *obj, const std::string &_user, - boost::function< void (std::string, std::vector &, std::vector &, std::string) > cb) { + boost::function< void (std::string, std::vector &, std::vector &, Error) > cb) { twitObj = obj->clone(); user = _user; callBack = cb; diff --git a/backends/twitter/Requests/PINExchangeProcess.cpp b/backends/twitter/Requests/PINExchangeProcess.cpp index e1b031bc..f48d332b 100644 --- a/backends/twitter/Requests/PINExchangeProcess.cpp +++ b/backends/twitter/Requests/PINExchangeProcess.cpp @@ -20,10 +20,10 @@ void PINExchangeProcess::finalize() twitObj->getLastWebResponse(replyMsg); } - std::string error = getErrorMessage(replyMsg); - if(error.length()) { - LOG4CXX_ERROR(logger, user << ": Error while exchanging PIN for Access Token! " << error) - np->handleMessage(user, "twitter-account", error); + Error error = getErrorMessage(replyMsg); + if(error.getMessage().length()) { + LOG4CXX_ERROR(logger, user << ": Error while exchanging PIN for Access Token! " << error.getMessage()) + np->handleMessage(user, "twitter-account", error.getMessage()); np->handleLogoutRequest(user, ""); return; } diff --git a/backends/twitter/Requests/ProfileImageRequest.cpp b/backends/twitter/Requests/ProfileImageRequest.cpp index 5af984f6..3c55adc5 100644 --- a/backends/twitter/Requests/ProfileImageRequest.cpp +++ b/backends/twitter/Requests/ProfileImageRequest.cpp @@ -12,13 +12,15 @@ void ProfileImageRequest::run() void ProfileImageRequest::finalize() { + Error errResponse; if(!success) { LOG4CXX_ERROR(logger, user << " - " << error) img = ""; - callBack(user, buddy, img, reqID, error); + errResponse.setMessage(error); + callBack(user, buddy, img, reqID, errResponse); } else { LOG4CXX_INFO(logger, user << " - " << callbackdata); img = callbackdata; - callBack(user, buddy, img, reqID, error); + callBack(user, buddy, img, reqID, errResponse); } } diff --git a/backends/twitter/Requests/ProfileImageRequest.h b/backends/twitter/Requests/ProfileImageRequest.h index fb26e204..f293a9bd 100644 --- a/backends/twitter/Requests/ProfileImageRequest.h +++ b/backends/twitter/Requests/ProfileImageRequest.h @@ -22,7 +22,7 @@ class ProfileImageRequest : public Thread std::string url; std::string img; unsigned int reqID; - boost::function< void (std::string&, std::string&, std::string&, int, std::string&) > callBack; + boost::function< void (std::string&, std::string&, std::string&, int, Error&) > callBack; std::string ip, port, puser, ppasswd; @@ -33,7 +33,7 @@ class ProfileImageRequest : public Thread public: ProfileImageRequest(Config *config, const std::string &_user, const std::string &_buddy, const std::string &_url, unsigned int _reqID, - boost::function< void (std::string&, std::string&, std::string&, int, std::string&) > cb) { + boost::function< void (std::string&, std::string&, std::string&, int, Error&) > cb) { if(CONFIG_HAS_KEY(config,"proxy.server")) { ip = CONFIG_STRING(config,"proxy.server"); diff --git a/backends/twitter/Requests/RetweetRequest.cpp b/backends/twitter/Requests/RetweetRequest.cpp index e771fa7a..feabdcf1 100644 --- a/backends/twitter/Requests/RetweetRequest.cpp +++ b/backends/twitter/Requests/RetweetRequest.cpp @@ -8,15 +8,17 @@ void RetweetRequest::run() void RetweetRequest::finalize() { - replyMsg = ""; + Error error; if(!success) { - twitObj->getLastCurlError( replyMsg ); - LOG4CXX_ERROR(logger, user << " Curl error: " << replyMsg) - callBack(user, replyMsg); + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " Curl error: " << curlerror) + callBack(user, error); } else { - twitObj->getLastWebResponse( replyMsg ); - std::string error = getErrorMessage( replyMsg ); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + twitObj->getLastWebResponse(replyMsg); + error = getErrorMessage(replyMsg); + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) else LOG4CXX_INFO(logger, user << " " << replyMsg); callBack(user, error); } diff --git a/backends/twitter/Requests/RetweetRequest.h b/backends/twitter/Requests/RetweetRequest.h index b514b94d..a096ca78 100644 --- a/backends/twitter/Requests/RetweetRequest.h +++ b/backends/twitter/Requests/RetweetRequest.h @@ -18,11 +18,11 @@ class RetweetRequest : public Thread std::string user; std::string replyMsg; bool success; - boost::function < void (std::string&, std::string &) > callBack; + boost::function < void (std::string&, Error&) > callBack; public: RetweetRequest(twitCurl *obj, const std::string &_user, const std::string &_data, - boost::function < void (std::string &, std::string &) > _cb) { + boost::function < void (std::string &, Error&) > _cb) { twitObj = obj->clone(); data = _data; user = _user; diff --git a/backends/twitter/Requests/StatusUpdateRequest.cpp b/backends/twitter/Requests/StatusUpdateRequest.cpp index e393bd3b..f945ccee 100644 --- a/backends/twitter/Requests/StatusUpdateRequest.cpp +++ b/backends/twitter/Requests/StatusUpdateRequest.cpp @@ -14,13 +14,16 @@ void StatusUpdateRequest::run() void StatusUpdateRequest::finalize() { + Error error; if(!success) { - twitObj->getLastCurlError( replyMsg ); - LOG4CXX_ERROR(logger, user << " - Curl error: " << replyMsg ); - callBack(user, replyMsg); + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " - Curl error: " << curlerror); + callBack(user, error); } else { - std::string error = getErrorMessage(replyMsg); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + error = getErrorMessage(replyMsg); + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) else LOG4CXX_INFO(logger, "Updated status for " << user << ": " << data); callBack(user, error); } diff --git a/backends/twitter/Requests/StatusUpdateRequest.h b/backends/twitter/Requests/StatusUpdateRequest.h index 8491abb1..990571fb 100644 --- a/backends/twitter/Requests/StatusUpdateRequest.h +++ b/backends/twitter/Requests/StatusUpdateRequest.h @@ -3,6 +3,7 @@ #include "transport/threadpool.h" #include "../libtwitcurl/twitcurl.h" +#include "../TwitterResponseParser.h" #include "transport/networkplugin.h" #include "transport/logging.h" #include @@ -16,12 +17,12 @@ class StatusUpdateRequest : public Thread std::string data; std::string user; std::string replyMsg; - boost::function callBack; + boost::function callBack; bool success; public: StatusUpdateRequest(twitCurl *obj, const std::string &_user, const std::string &_data, - boost::function cb) { + boost::function cb) { twitObj = obj->clone(); data = _data; user = _user; diff --git a/backends/twitter/Requests/TimelineRequest.cpp b/backends/twitter/Requests/TimelineRequest.cpp index 1510dd37..20dcae98 100644 --- a/backends/twitter/Requests/TimelineRequest.cpp +++ b/backends/twitter/Requests/TimelineRequest.cpp @@ -17,13 +17,16 @@ void TimelineRequest::run() void TimelineRequest::finalize() { + Error error; if(!success) { - twitObj->getLastCurlError( replyMsg ); - LOG4CXX_ERROR(logger, user << " - Curl error: " << replyMsg) - callBack(user, userRequested, tweets, replyMsg); + std::string curlerror; + twitObj->getLastCurlError(curlerror); + error.setMessage(curlerror); + LOG4CXX_ERROR(logger, user << " - Curl error: " << curlerror) + callBack(user, userRequested, tweets, error); } else { - std::string error = getErrorMessage(replyMsg); - if(error.length()) LOG4CXX_ERROR(logger, user << " - " << error) + error = getErrorMessage(replyMsg); + if(error.getMessage().length()) LOG4CXX_ERROR(logger, user << " - " << error.getMessage()) callBack(user, userRequested, tweets, error); } } diff --git a/backends/twitter/Requests/TimelineRequest.h b/backends/twitter/Requests/TimelineRequest.h index 05bcc8c0..11b26f91 100644 --- a/backends/twitter/Requests/TimelineRequest.h +++ b/backends/twitter/Requests/TimelineRequest.h @@ -19,12 +19,12 @@ class TimelineRequest : public Thread std::string replyMsg; std::string since_id; bool success; - boost::function< void (std::string&, std::string&, std::vector &, std::string&) > callBack; + boost::function< void (std::string&, std::string&, std::vector &, Error&) > callBack; std::vector tweets; public: TimelineRequest(twitCurl *obj, const std::string &_user, const std::string &_user2, const std::string &_since_id, - boost::function< void (std::string&, std::string&, std::vector &, std::string&) > cb) { + boost::function< void (std::string&, std::string&, std::vector &, Error&) > cb) { twitObj = obj->clone(); user = _user; userRequested = _user2; diff --git a/backends/twitter/TwitterPlugin.cpp b/backends/twitter/TwitterPlugin.cpp index dcdfa403..27c13e1c 100644 --- a/backends/twitter/TwitterPlugin.cpp +++ b/backends/twitter/TwitterPlugin.cpp @@ -533,11 +533,11 @@ std::string TwitterPlugin::getMostRecentDMID(const std::string user) } /************************************** Twitter response functions **********************************/ -void TwitterPlugin::statusUpdateResponse(std::string &user, std::string &errMsg) +void TwitterPlugin::statusUpdateResponse(std::string &user, Error &errMsg) { - if(errMsg.length()) { + if(errMsg.getMessage().length()) { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } else { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, "Status Update successful", userdb[user].twitterMode == CHATROOM ? adminNickName : ""); @@ -561,9 +561,9 @@ void TwitterPlugin::clearRoster(const std::string user) userdb[user].buddies.clear(); } -void TwitterPlugin::populateRoster(std::string &user, std::vector &friends, std::vector &friendAvatars, std::string &errMsg) +void TwitterPlugin::populateRoster(std::string &user, std::vector &friends, std::vector &friendAvatars, Error &errMsg) { - if(errMsg.length() == 0) + if(errMsg.getMessage().length() == 0) { for(int i=0 ; i &friends userdb[user].twitterMode == CHATROOM ? adminNickName : "");*/ } } else handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - std::string("Error populating roster - ") + errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + std::string("Error populating roster - ") + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); if(userdb[user].twitterMode == CHATROOM) handleParticipantChanged(user, userdb[user].nickName, adminChatRoom, 0, pbnetwork::STATUS_ONLINE); } -void TwitterPlugin::displayFriendlist(std::string &user, std::vector &friends, std::vector &friendAvatars, std::string &errMsg) +void TwitterPlugin::displayFriendlist(std::string &user, std::vector &friends, std::vector &friendAvatars, Error &errMsg) { - if(errMsg.length() == 0) + if(errMsg.getMessage().length() == 0) { std::string userlist = "\n***************USER LIST****************\n"; for(int i=0 ; i < friends.size() ; i++) { @@ -601,13 +601,13 @@ void TwitterPlugin::displayFriendlist(std::string &user, std::vector &frie handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, userlist, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } else handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } -void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested, std::vector &tweets , std::string &errMsg) +void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested, std::vector &tweets , Error &errMsg) { - if(errMsg.length() == 0) { + if(errMsg.getMessage().length() == 0) { std::string timeline = ""; std::map lastTweet; @@ -643,14 +643,21 @@ void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested, if(timeline.length()) handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, timeline, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } else handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } -void TwitterPlugin::directMessageResponse(std::string &user, std::string &username, std::vector &messages, std::string &errMsg) +void TwitterPlugin::directMessageResponse(std::string &user, std::string &username, std::vector &messages, Error &errMsg) { - if(errMsg.length()) { - handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - std::string("Error while sending direct message! - ") + errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + if(errMsg.getCode() == "93") //Permission Denied + return; + + if(errMsg.getMessage().length()) { + if(username != "") + handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, + std::string("Error while sending direct message! - ") + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + else + handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, + std::string("Error while fetching direct messages! - ") + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); return; } @@ -698,11 +705,11 @@ void TwitterPlugin::directMessageResponse(std::string &user, std::string &userna } } -void TwitterPlugin::createFriendResponse(std::string &user, User &frnd, std::string &img, std::string &errMsg) +void TwitterPlugin::createFriendResponse(std::string &user, User &frnd, std::string &img, Error &errMsg) { - if(errMsg.length()) { + if(errMsg.getMessage().length()) { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); return; } @@ -721,11 +728,11 @@ void TwitterPlugin::createFriendResponse(std::string &user, User &frnd, std::str } } -void TwitterPlugin::deleteFriendResponse(std::string &user, User &frnd, std::string &errMsg) +void TwitterPlugin::deleteFriendResponse(std::string &user, User &frnd, Error &errMsg) { - if(errMsg.length()) { + if(errMsg.getMessage().length()) { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); return; } @@ -745,22 +752,22 @@ void TwitterPlugin::deleteFriendResponse(std::string &user, User &frnd, std::str } -void TwitterPlugin::RetweetResponse(std::string &user, std::string &errMsg) +void TwitterPlugin::RetweetResponse(std::string &user, Error &errMsg) { - if(errMsg.length()) { + if(errMsg.getMessage().length()) { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } else { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, "Retweet successful", userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } } -void TwitterPlugin::profileImageResponse(std::string &user, std::string &buddy, std::string &img, unsigned int reqID, std::string &errMsg) +void TwitterPlugin::profileImageResponse(std::string &user, std::string &buddy, std::string &img, unsigned int reqID, Error &errMsg) { - if(errMsg.length()) { + if(errMsg.getMessage().length()) { handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName, - errMsg, userdb[user].twitterMode == CHATROOM ? adminNickName : ""); + errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : ""); } else { LOG4CXX_INFO(logger, user << " - Sending VCard for " << buddy) handleVCard(user, reqID, buddy, buddy, "", img); diff --git a/backends/twitter/TwitterPlugin.h b/backends/twitter/TwitterPlugin.h index 41bfc8ca..b49ea866 100644 --- a/backends/twitter/TwitterPlugin.h +++ b/backends/twitter/TwitterPlugin.h @@ -44,6 +44,7 @@ class TwitterPlugin; extern TwitterPlugin *np; extern Swift::SimpleEventLoop *loop_; // Event Loop + class TwitterPlugin : public NetworkPlugin { public: Swift::BoostNetworkFactories *m_factories; @@ -111,25 +112,25 @@ class TwitterPlugin : public NetworkPlugin { bool setTwitterMode(const std::string user, int m); /****************** Twitter response handlers **************************************/ - void statusUpdateResponse(std::string &user, std::string &errMsg); + void statusUpdateResponse(std::string &user, Error &errMsg); void helpMessageResponse(std::string &user, std::string &msg); - void populateRoster(std::string &user, std::vector &friends, std::vector &friendAvatars, std::string &errMsg); + void populateRoster(std::string &user, std::vector &friends, std::vector &friendAvatars, Error &errMsg); - void displayFriendlist(std::string &user, std::vector &friends, std::vector &friendAvatars, std::string &errMsg); + void displayFriendlist(std::string &user, std::vector &friends, std::vector &friendAvatars, Error &errMsg); - void displayTweets(std::string &user, std::string &userRequested, std::vector &tweets , std::string &errMsg); + void displayTweets(std::string &user, std::string &userRequested, std::vector &tweets , Error &errMsg); - void directMessageResponse(std::string &user, std::string &username, std::vector &messages, std::string &errMsg); + void directMessageResponse(std::string &user, std::string &username, std::vector &messages, Error &errMsg); - void createFriendResponse(std::string &user, User &frnd, std::string &img, std::string &errMsg); + void createFriendResponse(std::string &user, User &frnd, std::string &img, Error &errMsg); - void deleteFriendResponse(std::string &user, User &frnd, std::string &errMsg); + void deleteFriendResponse(std::string &user, User &frnd, Error &errMsg); - void RetweetResponse(std::string &user, std::string &errMsg); + void RetweetResponse(std::string &user, Error &errMsg); - void profileImageResponse(std::string &user, std::string &buddy, std::string &img, unsigned int reqID, std::string &errMsg); + void profileImageResponse(std::string &user, std::string &buddy, std::string &img, unsigned int reqID, Error &errMsg); /***********************************************************************************/ private: diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp index cc334d37..4ccc5e85 100644 --- a/backends/twitter/TwitterResponseParser.cpp +++ b/backends/twitter/TwitterResponseParser.cpp @@ -212,19 +212,30 @@ std::vector getIDs(std::string &xml) return IDs; } -std::string getErrorMessage(std::string &xml) +Error getErrorMessage(std::string &xml) { - std::string error; + std::string error = ""; + std::string code = ""; + Error resp; + Swift::ParserElement::ref rootElement = Swift::StringTreeParser::parse(xml); if(rootElement == NULL) { LOG4CXX_ERROR(logger, "Error while parsing XML"); - return ""; + return resp; } const std::string xmlns = rootElement->getNamespace(); const Swift::ParserElement::ref errorElement = rootElement->getChild(TwitterReponseTypes::error, xmlns); + Swift::AttributeMap attributes = errorElement->getAttributes(); - if(errorElement != NULL) error = errorElement->getText(); - return error; + if(errorElement != NULL) { + error = errorElement->getText(); + code = (errorElement->getAttributes()).getAttribute("code"); + } + + resp.setCode(code); + resp.setMessage(error); + + return resp; } diff --git a/backends/twitter/TwitterResponseParser.h b/backends/twitter/TwitterResponseParser.h index 70d525ac..cbfa8d23 100644 --- a/backends/twitter/TwitterResponseParser.h +++ b/backends/twitter/TwitterResponseParser.h @@ -192,12 +192,25 @@ class DirectMessage void setRecipientData(User u) {recipient = u;} }; +class Error +{ + std::string code; + std::string message; + public: + Error():code(""),message(""){} + std::string getCode() {return code;} + std::string getMessage() {return message;} + + void setCode(std::string &_code) {code = _code;} + void setMessage(std::string &_message) {message = _message;} +}; + std::vector getTimeline(std::string &xml); std::vector getDirectMessages(std::string &xml); std::vector getIDs(std::string &xml); std::vector getUsers(std::string &xml); User getUser(std::string &xml); -std::string getErrorMessage(std::string &xml); +Error getErrorMessage(std::string &xml); Status getStatus(const Swift::ParserElement::ref &element, const std::string xmlns); DirectMessage getDirectMessage(const Swift::ParserElement::ref &element, const std::string xmlns);