summaryrefslogtreecommitdiff
path: root/protocols/Twitter/utility.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Twitter/utility.h')
-rw-r--r--protocols/Twitter/utility.h61
1 files changed, 58 insertions, 3 deletions
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 <http://www.gnu.org/licenses/>.
#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 &parameters ) ;
+ std::wstring OAuthConcatenateRequestElements( const std::wstring& httpMethod, std::wstring url, const std::wstring& parameters );
+ std::map<std::wstring, std::wstring> 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_);
}