From ab92c2a5cd5427bf8a33d06afdb64b88d2d640ed Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Wed, 6 Jun 2012 20:17:58 +0000 Subject: Twitter updated git-svn-id: http://svn.miranda-ng.org/main/trunk@337 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Twitter/utility.h | 61 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'protocols/Twitter/utility.h') diff --git a/protocols/Twitter/utility.h b/protocols/Twitter/utility.h index b68a4fcb9d..c827a6d1ec 100644 --- a/protocols/Twitter/utility.h +++ b/protocols/Twitter/utility.h @@ -17,6 +17,7 @@ along with this program. If not, see . #pragma once +#include "common.h" #include "http.h" #include "twitter.h" @@ -54,12 +55,66 @@ std::string b64encode(const std::string &s); class mir_twitter : public twitter { public: + mir_twitter() : twitter(), handle_(NULL), httpPOST_(NULL) {} void set_handle(HANDLE h) { handle_ = h; } + + // OAuthWebRequest used for all OAuth related queries + // + // consumerKey and consumerSecret - must be provided for every call, they identify the application + // oauthToken and oauthTokenSecret - need to be provided for every call, except for the first token request before authorizing + // pin - only used during authorization, when the user enters the PIN they received from the twitter website + std::wstring OAuthWebRequestSubmit( + const std::wstring& url, + const std::wstring& httpMethod, + const OAuthParameters *postData, + const std::wstring& consumerKey, + const std::wstring& consumerSecret, + const std::wstring& oauthToken = L"", + const std::wstring& oauthTokenSecret = L"", + const std::wstring& pin = L"" + ); + + std::wstring OAuthWebRequestSubmit( + const OAuthParameters& parameters, + const std::wstring& url + ); + + std::wstring UrlGetQuery( const std::wstring& url ); + + OAuthParameters BuildSignedOAuthParameters( const OAuthParameters& requestParameters, + const std::wstring& url, + const std::wstring& httpMethod, + const OAuthParameters *postData, + const std::wstring& consumerKey, + const std::wstring& consumerSecret, + const std::wstring& requestToken, + const std::wstring& requestTokenSecret, + const std::wstring& pin ); + + std::wstring BuildQueryString( const OAuthParameters ¶meters ) ; + std::wstring OAuthConcatenateRequestElements( const std::wstring& httpMethod, std::wstring url, const std::wstring& parameters ); + std::map CrackURL(std::wstring ); + std::wstring brook_httpsend(std::wstring, std::wstring, std::wstring, std::wstring); + void Disconnect(void) { if (httpPOST_) Netlib_CloseHandle(httpPOST_); httpPOST_ = NULL; } + std::wstring OAuthNormalizeUrl( const std::wstring& url ); + std::wstring OAuthNormalizeRequestParameters( const OAuthParameters& requestParameters ); + OAuthParameters ParseQueryString( const std::wstring& url ); + + std::wstring OAuthCreateNonce(); + std::wstring OAuthCreateTimestamp(); + std::string HMACSHA1( const std::string& keyBytes, const std::string& data ); + std::wstring Base64String( const std::string& hash ); + std::wstring OAuthCreateSignature( const std::wstring& signatureBase, const std::wstring& consumerSecret, const std::wstring& requestTokenSecret ); + protected: - http::response slurp(const std::string &,http::method,const std::string &); + http::response slurp(const std::string &,http::method, OAuthParameters ); + int LOG(const char *fmt,...); + int WLOG(const char* first, const std::wstring last); + + HANDLE httpPOST_; HANDLE handle_; }; @@ -77,7 +132,7 @@ inline void wcs_to_tcs(UINT code_page,const wchar_t *wstr,TCHAR *tstr,int tlen) #ifdef UNICODE wcsncpy(tstr,wstr,tlen); #else - WideCharToMultiByte(code_page,0,wstr,-1,tstr,tlen,0,0); + WideCharToMultiByte(code_page,0,wstr,-1,tstr,tlen,0,0); #endif } @@ -90,7 +145,7 @@ public: } ~ScopedLock() { - if (handle_) + if(handle_) ReleaseMutex(handle_); } -- cgit v1.2.3