191 lines
6.7 KiB
C++
191 lines
6.7 KiB
C++
#ifndef _TWITCURL_H_
|
|
#define _TWITCURL_H_
|
|
|
|
#include <string>
|
|
#include <sstream>
|
|
#include <cstring>
|
|
#include <vector>
|
|
#include <algorithm>
|
|
#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<std::string> &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_
|