diff --git a/backends/twitter/libtwitcurl/twitcurl.h b/backends/twitter/libtwitcurl/twitcurl.h index 9017ac61328ee0f8a9147546689f89f1a76afc4c..5e491088d53acb13e69a74d3b151ca926eb759de 100644 --- a/backends/twitter/libtwitcurl/twitcurl.h +++ b/backends/twitter/libtwitcurl/twitcurl.h @@ -1,8 +1,6 @@ #ifndef _TWITCURL_H_ #define _TWITCURL_H_ -#ifdef _WIN32 -#define NOMINMAX 1 -#endif + #include #include #include @@ -10,127 +8,24 @@ #include "oauthlib.h" #include "curl/curl.h" +/* Few common types used by twitCurl */ namespace twitCurlTypes { typedef enum _eTwitCurlApiFormatType { - eTwitCurlApiFormatXml = 0, - eTwitCurlApiFormatJson, + eTwitCurlApiFormatJson = 0, + eTwitCurlApiFormatXml, eTwitCurlApiFormatMax } eTwitCurlApiFormatType; typedef enum _eTwitCurlProtocolType { - eTwitCurlProtocolHttp = 0, - eTwitCurlProtocolHttps, + eTwitCurlProtocolHttps = 0, + eTwitCurlProtocolHttp, eTwitCurlProtocolMax } eTwitCurlProtocolType; }; -/* Default values used in twitcurl */ -namespace twitCurlDefaults -{ - /* Constants */ - const int TWITCURL_DEFAULT_BUFFSIZE = 1024; - const std::string TWITCURL_COLON = ":"; - const char TWITCURL_EOS = '\0'; - const unsigned int MAX_TIMELINE_TWEET_COUNT = 200; - - /* Miscellaneous data used to build twitter URLs*/ - const std::string TWITCURL_STATUSSTRING = "status="; - const std::string TWITCURL_TEXTSTRING = "text="; - const std::string TWITCURL_QUERYSTRING = "query="; - const std::string TWITCURL_SEARCHQUERYSTRING = "q="; - const std::string TWITCURL_SCREENNAME = "screen_name="; - const std::string TWITCURL_USERID = "user_id="; - const std::string TWITCURL_EXTENSIONFORMATS[2] = { ".xml", - ".json" - }; - const std::string TWITCURL_PROTOCOLS[2] = { "http://", - "https://" - }; - const std::string TWITCURL_TARGETSCREENNAME = "target_screen_name="; - const std::string TWITCURL_TARGETUSERID = "target_id="; - const std::string TWITCURL_SINCEID = "since_id="; - const std::string TWITCURL_TRIMUSER = "trim_user=true"; - const std::string TWITCURL_INCRETWEETS = "include_rts=true"; - const std::string TWITCURL_COUNT = "count="; - - /* URL separators */ - const std::string TWITCURL_URL_SEP_AMP = "&"; - const std::string TWITCURL_URL_SEP_QUES = "?"; -}; - -/* Default twitter URLs */ -namespace twitterDefaults -{ - - /* Search URLs */ - const std::string TWITCURL_SEARCH_URL = "search.twitter.com/search"; - - /* Status URLs */ - const std::string TWITCURL_STATUSUPDATE_URL = "api.twitter.com/1.1/statuses/update"; - const std::string TWITCURL_STATUSSHOW_URL = "api.twitter.com/1.1/statuses/show/"; - const std::string TWITCURL_STATUDESTROY_URL = "api.twitter.com/1.1/statuses/destroy/"; - const std::string TWITCURL_RETWEET_URL = "api.twitter.com/1.1/statuses/retweet/"; - - /* Timeline URLs */ - const std::string TWITCURL_HOME_TIMELINE_URL = "api.twitter.com/1.1/statuses/home_timeline"; - const std::string TWITCURL_PUBLIC_TIMELINE_URL = "api.twitter.com/1.1/statuses/public_timeline"; - const std::string TWITCURL_FEATURED_USERS_URL = "api.twitter.com/1.1/statuses/featured"; - const std::string TWITCURL_FRIENDS_TIMELINE_URL = "api.twitter.com/1.1/statuses/friends_timeline"; - const std::string TWITCURL_MENTIONS_URL = "api.twitter.com/1.1/statuses/mentions"; - const std::string TWITCURL_USERTIMELINE_URL = "api.twitter.com/1.1/statuses/user_timeline"; - - /* Users URLs */ - const std::string TWITCURL_LOOKUPUSERS_URL = "api.twitter.com/1.1/users/lookup"; - const std::string TWITCURL_SHOWUSERS_URL = "api.twitter.com/1.1/users/show"; - const std::string TWITCURL_SHOWFRIENDS_URL = "api.twitter.com/1.1/statuses/friends"; - const std::string TWITCURL_SHOWFOLLOWERS_URL = "api.twitter.com/1.1/statuses/followers"; - - /* Direct messages URLs */ - const std::string TWITCURL_DIRECTMESSAGES_URL = "api.twitter.com/1.1/direct_messages"; - const std::string TWITCURL_DIRECTMESSAGENEW_URL = "api.twitter.com/1.1/direct_messages/new"; - const std::string TWITCURL_DIRECTMESSAGESSENT_URL = "api.twitter.com/1.1/direct_messages/sent"; - const std::string TWITCURL_DIRECTMESSAGEDESTROY_URL = "api.twitter.com/1.1/direct_messages/destroy/"; - - /* Friendships URLs */ - const std::string TWITCURL_FRIENDSHIPSCREATE_URL = "api.twitter.com/1.1/friendships/create"; - const std::string TWITCURL_FRIENDSHIPSDESTROY_URL = "api.twitter.com/1.1/friendships/destroy"; - const std::string TWITCURL_FRIENDSHIPSSHOW_URL = "api.twitter.com/1.1/friendships/show"; - - /* Social graphs URLs */ - const std::string TWITCURL_FRIENDSIDS_URL = "api.twitter.com/1.1/friends/ids"; - const std::string TWITCURL_FOLLOWERSIDS_URL = "api.twitter.com/1.1/followers/ids"; - - /* Account URLs */ - const std::string TWITCURL_ACCOUNTRATELIMIT_URL = "api.twitter.com/1.1/account/rate_limit_status"; - const std::string TWITCURL_ACCOUNTVERIFYCRED_URL = "api.twitter.com/1.1/account/verify_credentials"; - - /* Favorites URLs */ - const std::string TWITCURL_FAVORITESGET_URL = "api.twitter.com/1.1/favorites"; - const std::string TWITCURL_FAVORITECREATE_URL = "api.twitter.com/1.1/favorites/create/"; - const std::string TWITCURL_FAVORITEDESTROY_URL = "api.twitter.com/1.1/favorites/destroy/"; - - /* Block URLs */ - const std::string TWITCURL_BLOCKSCREATE_URL = "api.twitter.com/1.1/blocks/create/"; - const std::string TWITCURL_BLOCKSDESTROY_URL = "api.twitter.com/1.1/blocks/destroy/"; - - /* Saved Search URLs */ - const std::string TWITCURL_SAVEDSEARCHGET_URL = "api.twitter.com/1.1/saved_searches"; - const std::string TWITCURL_SAVEDSEARCHSHOW_URL = "api.twitter.com/1.1/saved_searches/show/"; - const std::string TWITCURL_SAVEDSEARCHCREATE_URL = "api.twitter.com/1.1/saved_searches/create"; - const std::string TWITCURL_SAVEDSEARCHDESTROY_URL = "api.twitter.com/1.1/saved_searches/destroy/"; - - /* Trends URLs */ - const std::string TWITCURL_TRENDS_URL = "api.twitter.com/1.1/trends"; - const std::string TWITCURL_TRENDSDAILY_URL = "api.twitter.com/1.1/trends/daily"; - const std::string TWITCURL_TRENDSCURRENT_URL = "api.twitter.com/1.1/trends/current"; - const std::string TWITCURL_TRENDSWEEKLY_URL = "api.twitter.com/1.1/trends/weekly"; - const std::string TWITCURL_TRENDSAVAILABLE_URL = "api.twitter.com/1.1/trends/available"; - -}; - /* twitCurl class */ class twitCurl { @@ -150,15 +45,11 @@ public: void setTwitterUsername( std::string& userName /* in */ ); void setTwitterPassword( std::string& passWord /* in */ ); - /* Twitter API type */ - void setTwitterApiType( twitCurlTypes::eTwitCurlApiFormatType eType ); - void setTwitterProcotolType( twitCurlTypes::eTwitCurlProtocolType eType ); - /* Twitter search APIs */ - bool search( std::string& searchQuery /* in */ ); + bool search( std::string& searchQuery /* in */, std::string resultCount = "" /* in */ ); /* Twitter status APIs */ - bool statusUpdate( std::string& newStatus /* in */ ); + 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 */ ); @@ -167,18 +58,21 @@ public: 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 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 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 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 */ ); @@ -189,12 +83,15 @@ public: bool friendshipShow( std::string& userInfo /* in */, bool isUserId = false /* in */ ); /* Twitter social graphs APIs */ - bool friendsIdsGet( std::string& userInfo /* in */, bool isUserId = false /* in */ ); - bool followersIdsGet( std::string& userInfo /* in */, bool isUserId = false /* in */ ); + 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 */ ); @@ -203,6 +100,9 @@ public: /* 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(); @@ -234,13 +134,14 @@ public: void setProxyServerPort( std::string& proxyServerPort /* in */ ); void setProxyUserName( std::string& proxyUserName /* in */ ); void setProxyPassword( std::string& proxyPassword /* in */ ); - - twitCurl* clone(); + + /* Clones this object */ + twitCurl* clone(); private: /* cURL data */ CURL* m_curlHandle; - char m_errorBuffer[twitCurlDefaults::TWITCURL_DEFAULT_BUFFSIZE]; + char* m_errorBuffer; std::string m_callbackData; /* cURL flags */ @@ -272,7 +173,8 @@ private: void prepareCurlUserPass(); void prepareStandardParams(); bool performGet( const std::string& getUrl ); - bool performGet( const std::string& getUrl, const std::string& oAuthHttpHeader ); + 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 = "" );