#ifndef __OAUTHLIB_H__#define __OAUTHLIB_H__#include"time.h"#include<cstdlib>#include<sstream>#include<iostream>#include<fstream>#include<string>#include<list>#include<map>typedefenum_eOAuthHttpRequestType{eOAuthHttpInvalid=0,eOAuthHttpGet,eOAuthHttpPost,eOAuthHttpDelete}eOAuthHttpRequestType;typedefstd::list<std::string>oAuthKeyValueList;typedefstd::map<std::string,std::string>oAuthKeyValuePairs;classoAuth{public:oAuth();~oAuth();/* OAuth public methods used by twitCurl */voidgetConsumerKey(std::string&consumerKey/* out */);voidsetConsumerKey(conststd::string&consumerKey/* in */);voidgetConsumerSecret(std::string&consumerSecret/* out */);voidsetConsumerSecret(conststd::string&consumerSecret/* in */);voidgetOAuthTokenKey(std::string&oAuthTokenKey/* out */);voidsetOAuthTokenKey(conststd::string&oAuthTokenKey/* in */);voidgetOAuthTokenSecret(std::string&oAuthTokenSecret/* out */);voidsetOAuthTokenSecret(conststd::string&oAuthTokenSecret/* in */);voidgetOAuthScreenName(std::string&oAuthScreenName/* out */);voidsetOAuthScreenName(conststd::string&oAuthScreenName/* in */);voidgetOAuthPin(std::string&oAuthPin/* out */);voidsetOAuthPin(conststd::string&oAuthPin/* in */);boolgetOAuthHeader(consteOAuthHttpRequestTypeeType,/* in */conststd::string&rawUrl,/* in */conststd::string&rawData,/* in */std::string&oAuthHttpHeader,/* out */constboolincludeOAuthVerifierPin=false/* in */);boolextractOAuthTokenKeySecret(conststd::string&requestTokenResponse/* in */);oAuthclone();private:/* OAuth data */std::stringm_consumerKey;std::stringm_consumerSecret;std::stringm_oAuthTokenKey;std::stringm_oAuthTokenSecret;std::stringm_oAuthPin;std::stringm_nonce;std::stringm_timeStamp;std::stringm_oAuthScreenName;/* OAuth twitter related utility methods */voidbuildOAuthRawDataKeyValPairs(conststd::string&rawData,/* in */boolurlencodeData,/* in */oAuthKeyValuePairs&rawDataKeyValuePairs/* out */);boolbuildOAuthTokenKeyValuePairs(constboolincludeOAuthVerifierPin,/* in */conststd::string&oauthSignature,/* in */oAuthKeyValuePairs&keyValueMap/* out */,constboolgenerateTimestamp/* in */);boolgetStringFromOAuthKeyValuePairs(constoAuthKeyValuePairs&rawParamMap,/* in */std::string&rawParams,/* out */conststd::string¶msSeperator/* in */);boolgetSignature(consteOAuthHttpRequestTypeeType,/* in */conststd::string&rawUrl,/* in */constoAuthKeyValuePairs&rawKeyValuePairs,/* in */std::string&oAuthSignature/* out */);voidgenerateNonceTimeStamp();};#endif // __OAUTHLIB_H__