From 951bcb3971ac6c5b7d2ffbc8b759c3759eab05ae 2012-08-13 16:00:57 From: HanzZ Date: 2012-08-13 16:00:57 Subject: [PATCH] Merge branch 'master' of github.com:hanzz/libtransport --- diff --git a/backends/twitter/Requests/CreateFriendRequest.cpp b/backends/twitter/Requests/CreateFriendRequest.cpp index eae88fe7e0e85dc558c95c9d76fe68f3ce9757a3..305a88687440c901174b001ca54e4f46e6141b5e 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 bc8cc583dc0421c1143fb450a9a30d97d7e318fc..60d8cec0d2ccc4dc75b5be27ef2cedd773dc5101 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 5468cacea2047c036ffc8d78fd96a663795f866b..6fb8a7f4b758485ca513978a0cbc48110bbbad1e 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 031e4958c54b06cb08d9757179ecf6f6695f8497..0f6ed0d827646f3a2d2f0c52b8fa09c270cdccbf 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 5798f06a5ec43723e1abfb88b790551ce5e31437..64dcd050d69b538c5222bc3974b0cd65673b1326 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 19357759b0206989dfc1e279670fdfb2c152fc7d..754c24c8fab36cbbfd505630058ee4f46c3da429 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 92df6215f44dc9dce6883d18d71dbc01a00456e7..8781902d88df306b262b6d769dacf779ea63a6f3 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 7acc2819565ae9ca472ab7487b71ab95d0b1e2c9..5f44a47b6d2480510dc7b72b94895ce410af3df2 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 e1b031bc6f45638a330994971db984c076e5a2db..f48d332b57b297e152dc6f99b08fb2f4f38eef33 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 5af984f654cfe9daab0810342fb700ee5c28ef01..3c55adc557c108d933ce520fec779f023b364fb0 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 fb26e20427e39de2608a82008b1cc0191b28374c..f293a9bdbafc37e42306218cf1d8df7de685fe8e 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 e771fa7a0e768adc5a4703dc1defc0f8cc3deb3c..feabdcf129a8224aee9afdf69c61de5448398217 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 b514b94dc0830173aff29a2fc97205ad04cfcb7d..a096ca78ab0a5632d862b767c9afa28eebf292e9 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 e393bd3b488d4a84a834967a2363c47418d5e0ad..f945ccee5868cd5e6d9f0a7c7af8c9a6f690d44c 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 8491abb18e0c944852a6cb41d09d1b8772d2626b..990571fbc48bfeffc3427f31dede4de642593301 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 1510dd37ba87fb02cfe5876f282a88bfd0f86c99..20dcae98a988395e94a2ca87b34363beefd07acc 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 05bcc8c0b9b0e93d91f580327d831901833331e4..11b26f912c6b327d45a5cdcd97aca53f0ed02cf0 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 dcdfa403d2e4bfe5da8494c0c63d1f8652bc7527..27c13e1c03731f2dd172aa5b76a99d4c34c543c5 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 41bfc8ca54d5939b189d08daf45d0534ea7cc55d..b49ea86670e475ee038e228c41d56c903807374f 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 cc334d37a1b3e707d607278d85c2b9c8e8853188..4ccc5e8507763bb88578dd6ba32a09fff7898d99 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 70d525ac672ad91e58b0dc94b762d4b57456d54f..cbfa8d23705627423dfcd55be73ba7c33337e9a9 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); diff --git a/src/config.cpp b/src/config.cpp index 54b7d61298fca88e5a49b82dd4a2fe4159dc75b5..8cc6249668a2b8a6406039b8393db3919a127548 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -101,7 +101,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description ("registration.instructions", value()->default_value("Enter your legacy network username and password."), "Instructions showed to user in registration form") ("registration.username_label", value()->default_value("Legacy network username:"), "Label for username field") ("registration.username_mask", value()->default_value(""), "Username mask") - ("registration.allowed_usernanames", value()->default_value(""), "Allowed usernames") + ("registration.allowed_usernames", value()->default_value(""), "Allowed usernames") ("registration.auto_register", value()->default_value(false), "Register new user automatically when the presence arrives.") ("registration.encoding", value()->default_value("utf8"), "Default encoding in registration form") ("registration.require_local_account", value()->default_value(false), "True if users have to have a local account to register to this transport from remote servers.")