Sirikata
libcore/include/sirikata/core/transfer/OAuthHttpManager.hpp
Go to the documentation of this file.
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_