From 561a55e96363a4206c762231557fbfdf294ad939 Mon Sep 17 00:00:00 2001 From: Sarang Bharadwaj Date: Tue, 7 Aug 2012 10:56:50 +0530 Subject: [PATCH] Made code compatible with spectrum 1 user DB --- backends/twitter/TwitterPlugin.cpp | 53 +++++++++++++++++++++--------- backends/twitter/TwitterPlugin.h | 3 ++ 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/backends/twitter/TwitterPlugin.cpp b/backends/twitter/TwitterPlugin.cpp index a4d35ca5..d540663e 100644 --- a/backends/twitter/TwitterPlugin.cpp +++ b/backends/twitter/TwitterPlugin.cpp @@ -17,19 +17,11 @@ DEFINE_LOGGER(logger, "Twitter Backend"); TwitterPlugin *np = NULL; Swift::SimpleEventLoop *loop_; // Event Loop -#define abs(x) ((x)<0?-(x):(x)) -//#define SHA(x) (convertToChars(Swift::byteArrayToString(Swift::SHA1::getHash(Swift::createByteArray((x)))))) -#define SHA(x) (Swift::Hexify::hexify(Swift::SHA1::getHash(Swift::createByteArray((x))))) +const std::string OLD_APP_KEY = "PCWAdQpyyR12ezp2fVwEhw"; +const std::string OLD_APP_SECRET = "EveLmCXJIg2R7BTCpm6OWV8YyX49nI0pxnYXh7JMvDg"; -//static std::string convertToChars(std::string s) -//{ -// std::string ret = ""; -// std::string tab[] = {"0","1","2","3","4","5","6","7", -// "8","9","A","B","C","D","E","F"}; -// for(int i = 0 ; i < s.size() ; i++) -// ret = tab[s[i]>>4&15] + tab[s[i]&15] + ret; -// return ret; -//} +#define abs(x) ((x)<0?-(x):(x)) +#define SHA(x) (Swift::Hexify::hexify(Swift::SHA1::getHash(Swift::createByteArray((x))))) //Compares two +ve intergers 'a' and 'b' represented as strings static int cmp(std::string a, std::string b) @@ -121,6 +113,8 @@ void TwitterPlugin::handleLoginRequest(const std::string &user, const std::strin initUserSession(user, legacyName, password); handleConnected(user); + LOG4CXX_INFO(logger, "SPECTRUM 1 USER? - " << (userdb[user].spectrum1User? "true" : "false")) + LOG4CXX_INFO(logger, user << ": Adding Buddy " << adminLegacyName << " " << adminAlias) handleBuddyChanged(user, adminLegacyName, adminAlias, std::vector(), pbnetwork::STATUS_ONLINE); userdb[user].nickName = ""; @@ -356,6 +350,26 @@ bool TwitterPlugin::getUserOAuthKeyAndSecret(const std::string user, std::string return true; } +bool TwitterPlugin::checkSpectrum1User(const std::string user) +{ + boost::mutex::scoped_lock lock(dblock); + + UserInfo info; + if(storagebackend->getUser(user, info) == false) { + LOG4CXX_ERROR(logger, "Didn't find entry for " << user << " in the database!") + return false; + } + + std::string first_synchronization_done = ""; + int type; + storagebackend->getUserSetting((long)info.id, "first_synchronization_done", type, first_synchronization_done); + + LOG4CXX_INFO(logger, "first_synchronization_done: " << first_synchronization_done) + + if(first_synchronization_done.length()) return true; + return false; +} + int TwitterPlugin::getTwitterMode(const std::string user) { boost::mutex::scoped_lock lock(dblock); @@ -446,12 +460,21 @@ void TwitterPlugin::initUserSession(const std::string user, const std::string le } } + //Check if the user is spectrum1 user + userdb[user].spectrum1User = checkSpectrum1User(user); + userdb[user].connectionState = NEW; userdb[user].legacyName = username; userdb[user].sessions->setTwitterUsername(username); - userdb[user].sessions->setTwitterPassword(passwd); - userdb[user].sessions->getOAuth().setConsumerKey(consumerKey); - userdb[user].sessions->getOAuth().setConsumerSecret(consumerSecret); + userdb[user].sessions->setTwitterPassword(passwd); + + if(!userdb[user].spectrum1User) { + userdb[user].sessions->getOAuth().setConsumerKey(consumerKey); + userdb[user].sessions->getOAuth().setConsumerSecret(consumerSecret); + } else { + userdb[user].sessions->getOAuth().setConsumerKey(OLD_APP_KEY); + userdb[user].sessions->getOAuth().setConsumerSecret(OLD_APP_SECRET); + } } void TwitterPlugin::OAuthFlowComplete(const std::string user, twitCurl *obj) diff --git a/backends/twitter/TwitterPlugin.h b/backends/twitter/TwitterPlugin.h index 162b8b98..e470723a 100644 --- a/backends/twitter/TwitterPlugin.h +++ b/backends/twitter/TwitterPlugin.h @@ -86,6 +86,8 @@ class TwitterPlugin : public NetworkPlugin { bool getUserOAuthKeyAndSecret(const std::string user, std::string &key, std::string &secret); + bool checkSpectrum1User(const std::string user); + bool storeUserOAuthKeyAndSecret(const std::string user, const std::string OAuthKey, const std::string OAuthSecret); void initUserSession(const std::string user, const std::string legacyName, const std::string password); @@ -153,6 +155,7 @@ class TwitterPlugin : public NetworkPlugin { struct UserData { std::string legacyName; + bool spectrum1User; //Legacy support User userTwitterObj; std::string userImg; twitCurl* sessions;