Sirikata
|
00001 // Copyright (c) 2011 Sirikata Authors. All rights reserved. 00002 // Use of this source code is governed by a BSD-style license that can 00003 // be found in the LICENSE file. 00004 00005 #ifndef _SIRIKATA_LIBCORE_OAUTH_HTTP_MANAGER_HPP_ 00006 #define _SIRIKATA_LIBCORE_OAUTH_HTTP_MANAGER_HPP_ 00007 00008 #include <sirikata/core/transfer/HttpManager.hpp> 00009 #include <sirikata/core/transfer/OAuthParams.hpp> 00010 00011 namespace Sirikata { 00012 namespace Transfer { 00013 00018 class SIRIKATA_EXPORT OAuthHttpManager { 00019 public: 00020 OAuthHttpManager(OAuthParamsPtr oauth) 00021 : mOAuth(oauth), 00022 mClient(oauth->consumerPtr(), oauth->tokenPtr()) 00023 {} 00024 00025 void head( 00026 Sirikata::Network::Address addr, const String& path, 00027 HttpManager::HttpCallback cb, 00028 const HttpManager::Headers& headers = HttpManager::Headers(), const HttpManager::QueryParameters& query_params = HttpManager::QueryParameters(), 00029 bool allow_redirects = true 00030 ); 00031 00032 void get( 00033 Sirikata::Network::Address addr, const String& path, 00034 HttpManager::HttpCallback cb, 00035 const HttpManager::Headers& headers = HttpManager::Headers(), const HttpManager::QueryParameters& query_params = HttpManager::QueryParameters(), 00036 bool allow_redirects = true 00037 ); 00038 00039 void post( 00040 Sirikata::Network::Address addr, const String& path, 00041 const String& content_type, const String& body, 00042 HttpManager::HttpCallback cb, const HttpManager::Headers& headers = HttpManager::Headers(), const HttpManager::QueryParameters& query_params = HttpManager::QueryParameters(), 00043 bool allow_redirects = true 00044 ); 00045 00046 void postURLEncoded( 00047 Sirikata::Network::Address addr, const String& path, 00048 const HttpManager::StringDictionary& body, 00049 HttpManager::HttpCallback cb, const HttpManager::Headers& headers = HttpManager::Headers(), const HttpManager::QueryParameters& query_params = HttpManager::QueryParameters(), 00050 bool allow_redirects = true 00051 ); 00052 00053 void postMultipartForm( 00054 Sirikata::Network::Address addr, const String& path, 00055 const HttpManager::MultipartDataList& data, 00056 HttpManager::HttpCallback cb, const HttpManager::Headers& headers = HttpManager::Headers(), const HttpManager::QueryParameters& query_params = HttpManager::QueryParameters(), 00057 bool allow_redirects = true 00058 ); 00059 00060 private: 00061 OAuthParamsPtr mOAuth; 00062 // The OAuth client uses mutable state, so it's not stored with the 00063 // params. It needs to be locked for thread safety 00064 boost::mutex mMutex; 00065 OAuth::Client mClient; 00066 }; 00067 00068 } // namespace Transfer 00069 } // namespace Sirikata 00070 00071 #endif //_SIRIKATA_LIBCORE_OAUTH_HTTP_MANAGER_HPP_