diff --git a/backends/twitter/libtwitcurl/twitcurl.h b/backends/twitter/libtwitcurl/twitcurl.h index 5e491088d53acb13e69a74d3b151ca926eb759de..8d18f1665602335237ff75071015727ecb7aa341 100644 --- a/backends/twitter/libtwitcurl/twitcurl.h +++ b/backends/twitter/libtwitcurl/twitcurl.h @@ -1,190 +1,190 @@ -#ifndef _TWITCURL_H_ -#define _TWITCURL_H_ - -#include -#include -#include -#include -#include "oauthlib.h" -#include "curl/curl.h" - -/* Few common types used by twitCurl */ -namespace twitCurlTypes -{ - typedef enum _eTwitCurlApiFormatType - { - eTwitCurlApiFormatJson = 0, - eTwitCurlApiFormatXml, - eTwitCurlApiFormatMax - } eTwitCurlApiFormatType; - - typedef enum _eTwitCurlProtocolType - { - eTwitCurlProtocolHttps = 0, - eTwitCurlProtocolHttp, - eTwitCurlProtocolMax - } eTwitCurlProtocolType; -}; - -/* twitCurl class */ -class twitCurl -{ -public: - twitCurl(); - ~twitCurl(); - - /* Twitter OAuth authorization methods */ - oAuth& getOAuth(); - bool oAuthRequestToken( std::string& authorizeUrl /* out */ ); - bool oAuthAccessToken(); - bool oAuthHandlePIN( const std::string& authorizeUrl /* in */ ); - - /* Twitter login APIs, set once and forget */ - std::string& getTwitterUsername(); - std::string& getTwitterPassword(); - void setTwitterUsername( std::string& userName /* in */ ); - void setTwitterPassword( std::string& passWord /* in */ ); - - /* Twitter search APIs */ - bool search( std::string& searchQuery /* in */, std::string resultCount = "" /* in */ ); - - /* Twitter status APIs */ - bool statusUpdate( std::string& newStatus /* in */, std::string inReplyToStatusId = "" /* in */ ); - bool statusShowById( std::string& statusId /* in */ ); - bool statusDestroyById( std::string& statusId /* in */ ); - bool retweetById( std::string& statusId /* in */ ); - - /* Twitter timeline APIs */ - bool timelineHomeGet( std::string sinceId = "" /* in */ ); - bool timelinePublicGet(); - bool timelineFriendsGet(); - bool timelineUserGet( bool trimUser /* in */, bool includeRetweets /* in */, - unsigned int tweetCount /* in */, - std::string userInfo = "" /* in */, - bool isUserId = false /* in */ ); - bool featuredUsersGet(); - bool mentionsGet( std::string sinceId = "" /* in */ ); - - /* Twitter user APIs */ - bool userLookup( std::vector &userInfo /* in */, bool isUserId = false /* in */ ); - bool userGet( std::string& userInfo /* in */, bool isUserId = false /* in */ ); - bool friendsGet( std::string userInfo = "" /* in */, bool isUserId = false /* in */ ); - bool followersGet( std::string userInfo = "" /* in */, bool isUserId = false /* in */ ); - - /* Twitter direct message APIs */ - bool directMessageGet( std::string sinceId = "" /* in */ ); - bool directMessageSend( std::string& userInfo /* in */, std::string& dMsg /* in */, bool isUserId = false /* in */ ); - bool directMessageGetSent(); - bool directMessageDestroyById( std::string& dMsgId /* in */ ); - - /* Twitter friendships APIs */ - bool friendshipCreate( std::string& userInfo /* in */, bool isUserId = false /* in */ ); - bool friendshipDestroy( std::string& userInfo /* in */, bool isUserId = false /* in */ ); - bool friendshipShow( std::string& userInfo /* in */, bool isUserId = false /* in */ ); - - /* Twitter social graphs APIs */ - bool friendsIdsGet( std::string& nextCursor /* in */, - std::string& userInfo /* in */, bool isUserId = false /* in */ ); - bool followersIdsGet( std::string& nextCursor /* in */, - std::string& userInfo /* in */, bool isUserId = false /* in */ ); - - /* Twitter account APIs */ - bool accountRateLimitGet(); - bool accountVerifyCredGet(); - - /* Twitter favorites APIs */ - bool favoriteGet(); - bool favoriteCreate( std::string& statusId /* in */ ); - bool favoriteDestroy( std::string& statusId /* in */ ); - - /* Twitter block APIs */ - bool blockCreate( std::string& userInfo /* in */ ); - bool blockDestroy( std::string& userInfo /* in */ ); - bool blockListGet( std::string& nextCursor /* in */, - bool includeEntities /* in */, bool skipStatus /* in */ ); - bool blockIdsGet( std::string& nextCursor /* in */, bool stringifyIds /* in */ ); - - /* Twitter search APIs */ - bool savedSearchGet(); - bool savedSearchCreate( std::string& query /* in */ ); - bool savedSearchShow( std::string& searchId /* in */ ); - bool savedSearchDestroy( std::string& searchId /* in */ ); - - /* Twitter trends APIs (JSON) */ - bool trendsGet(); - bool trendsDailyGet(); - bool trendsWeeklyGet(); - bool trendsCurrentGet(); - bool trendsAvailableGet(); - - /* cURL APIs */ - bool isCurlInit(); - void getLastWebResponse( std::string& outWebResp /* out */ ); - void getLastCurlError( std::string& outErrResp /* out */); - - /* Internal cURL related methods */ - int saveLastWebResponse( char*& data, size_t size ); - - /* cURL proxy APIs */ - std::string& getProxyServerIp(); - std::string& getProxyServerPort(); - std::string& getProxyUserName(); - std::string& getProxyPassword(); - void setProxyServerIp( std::string& proxyServerIp /* in */ ); - void setProxyServerPort( std::string& proxyServerPort /* in */ ); - void setProxyUserName( std::string& proxyUserName /* in */ ); - void setProxyPassword( std::string& proxyPassword /* in */ ); - - /* Clones this object */ - twitCurl* clone(); - -private: - /* cURL data */ - CURL* m_curlHandle; - char* m_errorBuffer; - std::string m_callbackData; - - /* cURL flags */ - bool m_curlProxyParamsSet; - bool m_curlLoginParamsSet; - bool m_curlCallbackParamsSet; - - /* cURL proxy data */ - std::string m_proxyServerIp; - std::string m_proxyServerPort; - std::string m_proxyUserName; - std::string m_proxyPassword; - - /* Twitter data */ - std::string m_twitterUsername; - std::string m_twitterPassword; - - /* Twitter API type */ - twitCurlTypes::eTwitCurlApiFormatType m_eApiFormatType; - twitCurlTypes::eTwitCurlProtocolType m_eProtocolType; - - /* OAuth data */ - oAuth m_oAuth; - - /* Private methods */ - void clearCurlCallbackBuffers(); - void prepareCurlProxy(); - void prepareCurlCallback(); - void prepareCurlUserPass(); - void prepareStandardParams(); - bool performGet( const std::string& getUrl ); - bool performGetInternal( const std::string& getUrl, - const std::string& oAuthHttpHeader ); - bool performDelete( const std::string& deleteUrl ); - bool performPost( const std::string& postUrl, std::string dataStr = "" ); - - /* Internal cURL related methods */ - static int curlCallback( char* data, size_t size, size_t nmemb, twitCurl* pTwitCurlObj ); -}; - - -/* Private functions */ -void utilMakeCurlParams( std::string& outStr, std::string& inParam1, std::string& inParam2 ); -void utilMakeUrlForUser( std::string& outUrl, const std::string& baseUrl, std::string& userInfo, bool isUserId ); - -#endif // _TWITCURL_H_ +#ifndef _TWITCURL_H_ +#define _TWITCURL_H_ + +#include +#include +#include +#include +#include "oauthlib.h" +#include "curl/curl.h" + +/* Few common types used by twitCurl */ +namespace twitCurlTypes +{ + typedef enum _eTwitCurlApiFormatType + { + eTwitCurlApiFormatJson = 0, + eTwitCurlApiFormatXml, + eTwitCurlApiFormatMax + } eTwitCurlApiFormatType; + + typedef enum _eTwitCurlProtocolType + { + eTwitCurlProtocolHttps = 0, + eTwitCurlProtocolHttp, + eTwitCurlProtocolMax + } eTwitCurlProtocolType; +}; + +/* twitCurl class */ +class twitCurl +{ +public: + twitCurl(); + ~twitCurl(); + + /* Twitter OAuth authorization methods */ + oAuth& getOAuth(); + bool oAuthRequestToken( std::string& authorizeUrl /* out */ ); + bool oAuthAccessToken(); + bool oAuthHandlePIN( const std::string& authorizeUrl /* in */ ); + + /* Twitter login APIs, set once and forget */ + std::string& getTwitterUsername(); + std::string& getTwitterPassword(); + void setTwitterUsername( std::string& userName /* in */ ); + void setTwitterPassword( std::string& passWord /* in */ ); + + /* Twitter search APIs */ + bool search( std::string& searchQuery /* in */, std::string resultCount = "" /* in */ ); + + /* Twitter status APIs */ + bool statusUpdate( std::string& newStatus /* in */, std::string inReplyToStatusId = "" /* in */ ); + bool statusShowById( std::string& statusId /* in */ ); + bool statusDestroyById( std::string& statusId /* in */ ); + bool retweetById( std::string& statusId /* in */ ); + + /* Twitter timeline APIs */ + bool timelineHomeGet( std::string sinceId = "" /* in */ ); + bool timelinePublicGet(); + bool timelineFriendsGet(); + bool timelineUserGet( bool trimUser /* in */, bool includeRetweets /* in */, + unsigned int tweetCount /* in */, + std::string userInfo = "" /* in */, + bool isUserId = false /* in */ ); + bool featuredUsersGet(); + bool mentionsGet( std::string sinceId = "" /* in */ ); + + /* Twitter user APIs */ + bool userLookup( std::vector &userInfo /* in */, bool isUserId = false /* in */ ); + bool userGet( std::string& userInfo /* in */, bool isUserId = false /* in */ ); + bool friendsGet( std::string userInfo = "" /* in */, bool isUserId = false /* in */ ); + bool followersGet( std::string userInfo = "" /* in */, bool isUserId = false /* in */ ); + + /* Twitter direct message APIs */ + bool directMessageGet( std::string sinceId = "" /* in */ ); + bool directMessageSend( std::string& userInfo /* in */, std::string& dMsg /* in */, bool isUserId = false /* in */ ); + bool directMessageGetSent(); + bool directMessageDestroyById( std::string& dMsgId /* in */ ); + + /* Twitter friendships APIs */ + bool friendshipCreate( std::string& userInfo /* in */, bool isUserId = false /* in */ ); + bool friendshipDestroy( std::string& userInfo /* in */, bool isUserId = false /* in */ ); + bool friendshipShow( std::string& userInfo /* in */, bool isUserId = false /* in */ ); + + /* Twitter social graphs APIs */ + bool friendsIdsGet( std::string& nextCursor /* in */, + std::string& userInfo /* in */, bool isUserId = false /* in */ ); + bool followersIdsGet( std::string& nextCursor /* in */, + std::string& userInfo /* in */, bool isUserId = false /* in */ ); + + /* Twitter account APIs */ + bool accountRateLimitGet(); + bool accountVerifyCredGet(); + + /* Twitter favorites APIs */ + bool favoriteGet(); + bool favoriteCreate( std::string& statusId /* in */ ); + bool favoriteDestroy( std::string& statusId /* in */ ); + + /* Twitter block APIs */ + bool blockCreate( std::string& userInfo /* in */ ); + bool blockDestroy( std::string& userInfo /* in */ ); + bool blockListGet( std::string& nextCursor /* in */, + bool includeEntities /* in */, bool skipStatus /* in */ ); + bool blockIdsGet( std::string& nextCursor /* in */, bool stringifyIds /* in */ ); + + /* Twitter search APIs */ + bool savedSearchGet(); + bool savedSearchCreate( std::string& query /* in */ ); + bool savedSearchShow( std::string& searchId /* in */ ); + bool savedSearchDestroy( std::string& searchId /* in */ ); + + /* Twitter trends APIs (JSON) */ + bool trendsGet(); + bool trendsDailyGet(); + bool trendsWeeklyGet(); + bool trendsCurrentGet(); + bool trendsAvailableGet(); + + /* cURL APIs */ + bool isCurlInit(); + void getLastWebResponse( std::string& outWebResp /* out */ ); + void getLastCurlError( std::string& outErrResp /* out */); + + /* Internal cURL related methods */ + int saveLastWebResponse( char*& data, size_t size ); + + /* cURL proxy APIs */ + std::string& getProxyServerIp(); + std::string& getProxyServerPort(); + std::string& getProxyUserName(); + std::string& getProxyPassword(); + void setProxyServerIp( std::string& proxyServerIp /* in */ ); + void setProxyServerPort( std::string& proxyServerPort /* in */ ); + void setProxyUserName( std::string& proxyUserName /* in */ ); + void setProxyPassword( std::string& proxyPassword /* in */ ); + + /* Clones this object */ + twitCurl* clone(); + +private: + /* cURL data */ + CURL* m_curlHandle; + char* m_errorBuffer; + std::string m_callbackData; + + /* cURL flags */ + bool m_curlProxyParamsSet; + bool m_curlLoginParamsSet; + bool m_curlCallbackParamsSet; + + /* cURL proxy data */ + std::string m_proxyServerIp; + std::string m_proxyServerPort; + std::string m_proxyUserName; + std::string m_proxyPassword; + + /* Twitter data */ + std::string m_twitterUsername; + std::string m_twitterPassword; + + /* Twitter API type */ + twitCurlTypes::eTwitCurlApiFormatType m_eApiFormatType; + twitCurlTypes::eTwitCurlProtocolType m_eProtocolType; + + /* OAuth data */ + oAuth m_oAuth; + + /* Private methods */ + void clearCurlCallbackBuffers(); + void prepareCurlProxy(); + void prepareCurlCallback(); + void prepareCurlUserPass(); + void prepareStandardParams(); + bool performGet( const std::string& getUrl ); + bool performGetInternal( const std::string& getUrl, + const std::string& oAuthHttpHeader ); + bool performDelete( const std::string& deleteUrl ); + bool performPost( const std::string& postUrl, std::string dataStr = "" ); + + /* Internal cURL related methods */ + static int curlCallback( char* data, size_t size, size_t nmemb, twitCurl* pTwitCurlObj ); +}; + + +/* Private functions */ +void utilMakeCurlParams( std::string& outStr, std::string& inParam1, std::string& inParam2 ); +void utilMakeUrlForUser( std::string& outUrl, const std::string& baseUrl, std::string& userInfo, bool isUserId ); + +#endif // _TWITCURL_H_