diff --git a/backends/twitter/libtwitcurl/twitcurl.cpp b/backends/twitter/libtwitcurl/twitcurl.cpp index 2ffebcac0ae3d8e460cb5ab5aa0d9ec5852456a7..cc24e1382e70b9c893e1ea4f8fd4e97d92faaed2 100644 --- a/backends/twitter/libtwitcurl/twitcurl.cpp +++ b/backends/twitter/libtwitcurl/twitcurl.cpp @@ -17,7 +17,8 @@ m_curlHandle( NULL ), m_curlProxyParamsSet( false ), m_curlLoginParamsSet( false ), m_curlCallbackParamsSet( false ), -m_eApiFormatType( twitCurlTypes::eTwitCurlApiFormatXml ) +m_eApiFormatType( twitCurlTypes::eTwitCurlApiFormatXml ), +m_eProtocolType( twitCurlTypes::eTwitCurlProtocolHttp ) { /* Clear callback buffers */ clearCurlCallbackBuffers(); @@ -51,14 +52,19 @@ twitCurl::~twitCurl() } } +/*++ +* @method: twitCurl::clone +* +* @description: creates a clone of twitcurl object +* +* @input: none +* +* @output: cloned object +* +*--*/ twitCurl* twitCurl::clone() { twitCurl *cloneObj = new twitCurl(); - - /* cURL flags */ - //cloneObj->m_curlProxyParamsSet = false; - //cloneObj->m_curlLoginParamsSet = m_curlLoginParamsSet; - //cloneObj->m_curlCallbackParamsSet = m_curlCallbackParamsSet; /* cURL proxy data */ cloneObj->setProxyServerIp(m_proxyServerIp); @@ -66,7 +72,6 @@ twitCurl* twitCurl::clone() cloneObj->setProxyUserName(m_proxyUserName); cloneObj->setProxyPassword(m_proxyPassword); - /* Twitter data */ cloneObj->setTwitterUsername(m_twitterUsername); cloneObj->setTwitterPassword(m_twitterPassword); @@ -96,6 +101,22 @@ void twitCurl::setTwitterApiType( twitCurlTypes::eTwitCurlApiFormatType eType ) eType : twitCurlTypes::eTwitCurlApiFormatXml; } +/*++ +* @method: twitCurl::setTwitterProcotolType +* +* @description: method to set protocol +* +* @input: none +* +* @output: none +* +*--*/ +void twitCurl::setTwitterProcotolType( twitCurlTypes::eTwitCurlProtocolType eType ) +{ + m_eProtocolType = ( eType < twitCurlTypes::eTwitCurlProtocolMax ) ? + eType : twitCurlTypes::eTwitCurlProtocolHttp; +} + /*++ * @method: twitCurl::isCurlInit * @@ -347,7 +368,8 @@ void twitCurl::setProxyPassword( std::string& proxyPassword ) bool twitCurl::search( std::string& searchQuery ) { /* Prepare URL */ - std::string buildUrl = twitterDefaults::TWITCURL_SEARCH_URL + + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_SEARCH_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[twitCurlTypes::eTwitCurlApiFormatJson] + twitCurlDefaults::TWITCURL_URL_SEP_QUES + twitCurlDefaults::TWITCURL_SEARCHQUERYSTRING + searchQuery; @@ -376,7 +398,8 @@ bool twitCurl::statusUpdate( std::string& newStatus ) std::string newStatusMsg = twitCurlDefaults::TWITCURL_STATUSSTRING + urlencode( newStatus ); /* Perform POST */ - retVal = performPost( twitterDefaults::TWITCURL_STATUSUPDATE_URL + + retVal = performPost( twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_STATUSUPDATE_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType], newStatusMsg ); } @@ -400,7 +423,8 @@ bool twitCurl::statusShowById( std::string& statusId ) if( statusId.length() ) { /* Prepare URL */ - std::string buildUrl = twitterDefaults::TWITCURL_STATUSSHOW_URL + statusId + + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_STATUSSHOW_URL + statusId + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; /* Perform GET */ @@ -426,7 +450,8 @@ bool twitCurl::statusDestroyById( std::string& statusId ) if( statusId.length() ) { /* Prepare URL */ - std::string buildUrl = twitterDefaults::TWITCURL_STATUDESTROY_URL + statusId + + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_STATUDESTROY_URL + statusId + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; /* Perform DELETE */ @@ -438,7 +463,7 @@ bool twitCurl::statusDestroyById( std::string& statusId ) /*++ * @method: twitCurl::retweetById * -* @description: method to retweet a status message by its id +* @description: method to RETWEET a status message by its id * * @input: statusId - a number in std::string format * @@ -448,27 +473,28 @@ bool twitCurl::statusDestroyById( std::string& statusId ) *--*/ bool twitCurl::retweetById( std::string& statusId ) { - bool retVal = false; - if( statusId.length() ) - { - /* Prepare URL */ - std::string buildUrl = twitterDefaults::TWITCURL_RETWEET_URL + statusId + - twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; + bool retVal = false; + if( statusId.length() ) + { + /* Prepare URL */ + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_RETWEET_URL + statusId + + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; - /* Send some dummy data in POST */ - std::string dummyData = twitCurlDefaults::TWITCURL_TEXTSTRING + - urlencode( std::string( "dummy" ) ); + /* Send some dummy data in POST */ + std::string dummyData = twitCurlDefaults::TWITCURL_TEXTSTRING + + urlencode( std::string( "dummy" ) ); - /* Perform Retweet */ - retVal = performPost( buildUrl, dummyData ); - } - return retVal; + /* Perform Retweet */ + retVal = performPost( buildUrl, dummyData ); + } + return retVal; } /*++ -* @method: twitCurl::timelinePublicGet +* @method: twitCurl::timelineHomeGet * -* @description: method to get public timeline +* @description: method to get home timeline * * @input: none * @@ -476,17 +502,23 @@ bool twitCurl::retweetById( std::string& statusId ) * response by twitter. Use getLastWebResponse() for that. * *--*/ -bool twitCurl::timelinePublicGet() +bool twitCurl::timelineHomeGet( std::string sinceId ) { + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_HOME_TIMELINE_URL + + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; + if( sinceId.length() ) + { + buildUrl += twitCurlDefaults::TWITCURL_URL_SEP_QUES + twitCurlDefaults::TWITCURL_SINCEID + sinceId; + } /* Perform GET */ - return performGet( twitterDefaults::TWITCURL_PUBLIC_TIMELINE_URL + - twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType] ); + return performGet( buildUrl ); } /*++ -* @method: twitCurl::timelineHomeGet +* @method: twitCurl::timelinePublicGet * -* @description: method to get home timeline +* @description: method to get public timeline * * @input: none * @@ -494,16 +526,12 @@ bool twitCurl::timelinePublicGet() * response by twitter. Use getLastWebResponse() for that. * *--*/ -bool twitCurl::timelineHomeGet(std::string sinceId) +bool twitCurl::timelinePublicGet() { - std::string buildUrl = twitterDefaults::TWITCURL_HOME_TIMELINE_URL + - twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; - if( sinceId.length() ) - { - buildUrl += twitCurlDefaults::TWITCURL_URL_SEP_QUES + twitCurlDefaults::TWITCURL_SINCEID + sinceId; - } /* Perform GET */ - return performGet( buildUrl ); + return performGet( twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_PUBLIC_TIMELINE_URL + + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType] ); } /*++ @@ -520,7 +548,8 @@ bool twitCurl::timelineHomeGet(std::string sinceId) bool twitCurl::featuredUsersGet() { /* Perform GET */ - return performGet( twitterDefaults::TWITCURL_FEATURED_USERS_URL + + return performGet( twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_FEATURED_USERS_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType] ); } @@ -538,7 +567,8 @@ bool twitCurl::featuredUsersGet() bool twitCurl::timelineFriendsGet() { /* Perform GET */ - return performGet( twitterDefaults::TWITCURL_FRIENDS_TIMELINE_URL + + return performGet( twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_FRIENDS_TIMELINE_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType] ); } @@ -555,7 +585,8 @@ bool twitCurl::timelineFriendsGet() *--*/ bool twitCurl::mentionsGet( std::string sinceId ) { - std::string buildUrl = twitterDefaults::TWITCURL_MENTIONS_URL + + std::string buildUrl = twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_MENTIONS_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType]; if( sinceId.length() ) { @@ -584,7 +615,8 @@ bool twitCurl::timelineUserGet( bool trimUser, bool includeRetweets, unsigned in /* Prepare URL */ std::string buildUrl; - utilMakeUrlForUser( buildUrl, twitterDefaults::TWITCURL_USERTIMELINE_URL + + utilMakeUrlForUser( buildUrl, twitCurlDefaults::TWITCURL_PROTOCOLS[m_eProtocolType] + + twitterDefaults::TWITCURL_USERTIMELINE_URL + twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType], userInfo, isUserId ); @@ -620,64 +652,67 @@ bool twitCurl::timelineUserGet( bool trimUser, bool includeRetweets, unsigned in } /*++ -* @method: twitCurl::userGet +* @method: twitCurl::userLookup * -* @description: method to get a user's profile +* @description: method to get a number of user's profiles * -* @input: userInfo - screen name or user id in string format, +* @input: userInfo - vector of screen names or user ids * isUserId - true if userInfo contains an id * -* @output: true if GET is success, otherwise false. This does not check http +* @output: true if POST is success, otherwise false. This does not check http * response by twitter. Use getLastWebResponse() for that. * *--*/ -bool twitCurl::userGet( std::string& userInfo, bool isUserId ) +bool twitCurl::userLookup( std::vector &userInfo, bool isUserId ) { bool retVal = false; - if( userInfo.length() ) + + if( userInfo.size() ) { - /* Set URL */ - std::string buildUrl; - utilMakeUrlForUser( buildUrl, twitterDefaults::TWITCURL_SHOWUSERS_URL + - twitCurlDefaults::TWITCURL_EXTENSIONFORMATS[m_eApiFormatType], - userInfo, isUserId ); + std::string userIds = ""; + std::string sep = ""; + for(int i=0 ; i &userInfo, bool isUserId ) +bool twitCurl::userGet( std::string& userInfo, bool isUserId ) { bool retVal = false; - if( userInfo.size() ) + if( userInfo.length() ) { - std::string userIds = ""; - std::string sep = ""; - for(int i=0 ; i